当前位置: 首页 > wzjs >正文

政府网站制作建设百度推广客户端下载

政府网站制作建设,百度推广客户端下载,个人兴趣图片集网站建设,在政府网站建设工作会上的讲话1. Bean 定义阶段 在 Spring 应用启动时,会读取配置文件(如 XML 配置、Java 注解配置等)或者扫描带有特定注解(如 Component、Service、Repository 等)的类,将这些 Bean 的定义信息加载到 Spring 的 BeanFa…

1. Bean 定义阶段

在 Spring 应用启动时,会读取配置文件(如 XML 配置、Java 注解配置等)或者扫描带有特定注解(如 @Component@Service@Repository 等)的类,将这些 Bean 的定义信息加载到 Spring 的 BeanFactory 或 ApplicationContext 中。这些定义信息包括 Bean 的类名、作用域、依赖关系等。

2. Bean 实例化阶段

  • 调用构造函数:Spring 根据 Bean 的定义信息,使用反射机制调用 Bean 类的构造函数来创建 Bean 的实例。如果 Bean 类有多个构造函数,Spring 会根据依赖注入的规则选择合适的构造函数。
  • 示例代码
public class MyBean {public MyBean() {System.out.println("MyBean 实例化中,调用构造函数");}
}

3. 属性注入阶段

在 Bean 实例化完成后,Spring 会根据 Bean 的定义信息,将依赖的其他 Bean 或属性值注入到该 Bean 中。注入方式包括构造函数注入、Setter 方法注入和字段注入等。

  • 示例代码
public class MyBean {private AnotherBean anotherBean;public MyBean() {System.out.println("MyBean 实例化中,调用构造函数");}public void setAnotherBean(AnotherBean anotherBean) {this.anotherBean = anotherBean;System.out.println("MyBean 属性注入:注入 AnotherBean");}
}public class AnotherBean {// ...
}

4. Bean 初始化前阶段

在属性注入完成后,Spring 会检查 Bean 是否实现了 BeanNameAwareBeanFactoryAware 或 ApplicationContextAware 接口,如果实现了这些接口,会依次调用相应的方法。

  • BeanNameAware 接口:该接口有一个 setBeanName 方法,Spring 会将 Bean 的名称传递给该方法。
  • BeanFactoryAware 接口:该接口有一个 setBeanFactory 方法,Spring 会将当前的 BeanFactory 传递给该方法。
  • ApplicationContextAware 接口:该接口有一个 setApplicationContext 方法,Spring 会将当前的 ApplicationContext 传递给该方法。
  • 示例代码
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;public class MyBean implements BeanNameAware, ApplicationContextAware {private String beanName;private ApplicationContext applicationContext;@Overridepublic void setBeanName(String name) {this.beanName = name;System.out.println("MyBean 初始化前:设置 Bean 名称为 " + beanName);}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext = applicationContext;System.out.println("MyBean 初始化前:设置 ApplicationContext");}
}

5. Bean 初始化阶段

  • InitializingBean 接口:如果 Bean 实现了 InitializingBean 接口,Spring 会调用其 afterPropertiesSet 方法,该方法可以用于在属性注入完成后进行一些初始化操作。
  • @PostConstruct 注解:如果 Bean 的某个方法上使用了 @PostConstruct 注解,Spring 会在该方法上调用该注解标记的方法。
  • 自定义初始化方法:在 Bean 的定义中,可以通过 init-method 属性指定一个自定义的初始化方法,Spring 会在合适的时机调用该方法。
  • 示例代码
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.InitializingBean;public class MyBean implements InitializingBean {@PostConstructpublic void postConstructMethod() {System.out.println("MyBean 初始化:@PostConstruct 注解方法执行");}@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("MyBean 初始化:InitializingBean 的 afterPropertiesSet 方法执行");}public void customInitMethod() {System.out.println("MyBean 初始化:自定义初始化方法执行");}
}

6. Bean 初始化后阶段

在 Bean 初始化完成后,Spring 会检查 Bean 是否需要进行 AOP 代理,如果需要,会为 Bean 创建代理对象。同时,如果 Bean 实现了 BeanPostProcessor 接口,Spring 会调用其 postProcessAfterInitialization 方法,该方法可以对 Bean 进行一些额外的处理。

  • 示例代码
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;public class MyBeanPostProcessor implements BeanPostProcessor {@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {System.out.println("MyBean 初始化后:BeanPostProcessor 的 postProcessAfterInitialization 方法执行,处理 " + beanName);return bean;}
}

7. Bean 使用阶段

经过上述步骤,Bean 已经完成了初始化过程,可以被应用程序使用。在应用程序的运行过程中,可以通过 ApplicationContext 或 BeanFactory 获取 Bean 实例,并调用其方法。

8. Bean 销毁前阶段

当 Spring 容器关闭时,会触发 Bean 的销毁过程。在销毁之前,如果 Bean 实现了 DisposableBean 接口,Spring 会调用其 destroy 方法。

  • 示例代码
import org.springframework.beans.factory.DisposableBean;public class MyBean implements DisposableBean {@Overridepublic void destroy() throws Exception {System.out.println("MyBean 销毁前:DisposableBean 的 destroy 方法执行");}
}

9. Bean 销毁阶段

  • @PreDestroy 注解:如果 Bean 的某个方法上使用了 @PreDestroy 注解,Spring 会在该方法上调用该注解标记的方法。
  • 自定义销毁方法:在 Bean 的定义中,可以通过 destroy-method 属性指定一个自定义的销毁方法,Spring 会在容器关闭时调用该方法。
  • 示例代码
import javax.annotation.PreDestroy;public class MyBean {@PreDestroypublic void preDestroyMethod() {System.out.println("MyBean 销毁:@PreDestroy 注解方法执行");}public void customDestroyMethod() {System.out.println("MyBean 销毁:自定义销毁方法执行");}
}

总结

Spring Bean 的生命周期可以概括为:定义 -> 实例化 -> 属性注入 -> 初始化前 -> 初始化 -> 初始化后 -> 使用 -> 销毁前 -> 销毁。通过实现不同的接口和使用注解,我们可以在 Bean 的生命周期的不同阶段进行定制化处理。

http://www.dtcms.com/wzjs/424868.html

相关文章:

  • 什么是h5动态网站建设化妆品软文推广范文
  • asp与java做网站效果视频网站搭建
  • 怎么上网站做简易注销的步骤今日新闻50字
  • 建站个人网站网络营销公司排名
  • 怎么自己改自己做的网站的图片长尾关键词举例
  • 一家专门做鞋子的网站江苏seo外包
  • 手机网站幻灯片代码大量微信群推广代发广告
  • 游戏网站制作上海app网络推广公司电话
  • 机械网站推广怎么做东莞网络营销平台
  • 建设部网站官网施工合同文本seo优化网站的注意事项
  • 初中生怎样做网站赚钱全网整合营销外包
  • 苏州网站建设公司哪家好深圳网络推广工资
  • 360网站卫士代备案流程女生学电子商务好吗
  • 基础微网站开发代理网络营销策划书2000字
  • 武汉外贸网站建设公司排名关键词排名优化官网
  • 西安建设学院网站首页收录网站排名
  • 详情页模板哪个网站好企业网络营销系统分析报告
  • 动漫做那个视频网站推广游戏怎么拉人最快
  • 网站开发所用的技术广东新闻今日大件事
  • 今日国际新闻最新新闻seo比较好的公司
  • java开发工程师工资一般多少seo模拟点击有用吗
  • win7电脑做网站服务器人工智能培训班收费标准
  • 做网站用的图片网站推广方式
  • 做黏土的网站谷歌浏览器下载安装2023最新版
  • 贵阳专业做网站的公司有哪些制作小程序的软件
  • 网站登录怎么保存用户名密码海淀seo搜索优化多少钱
  • 做外贸用什么网站好网站注册步骤
  • 政府网站后台如何管理十大免费cms建站系统介绍
  • 微信推广网站建设app拉新推广代理平台
  • 珠海做网站的公司打开全网搜索