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

地方新闻网站建设网络营销的优缺点

地方新闻网站建设,网络营销的优缺点,四川省人民政府魏云,云主机和云服务器的区别Spring Bean 的生命周期涉及多个阶段,从实例化到销毁,在开发中我们可以通过各种接口和注解介入这些阶段来定制化自己的功能。以下是详细的生命周期流程: 1. Bean 的实例化(Instantiation) 方式:通过构造函…

Spring Bean 的生命周期涉及多个阶段,从实例化到销毁,在开发中我们可以通过各种接口和注解介入这些阶段来定制化自己的功能。以下是详细的生命周期流程:


1. Bean 的实例化(Instantiation)

  • 方式:通过构造函数或工厂方法创建 Bean 的实例。
  • 触发条件:容器启动时,根据配置(如 @Component、XML 配置等)创建 Bean。
  • 关键点:此时 Bean 的属性尚未注入。

2. 属性赋值(Population of Properties)

  • 依赖注入:通过 @Autowired、Setter 方法、XML 配置的 <property> 等方式注入依赖。
  • 处理 @Value:解析并注入外部化配置(如 application.properties)。

3. Aware 接口回调

Bean 可以通过实现 Aware 接口获取容器信息:

  • BeanNameAware:获取 Bean 的名称。
  • BeanFactoryAware:获取 BeanFactory 实例。
  • ApplicationContextAware:获取 ApplicationContext 实例。
  • EnvironmentAware:获取环境变量和配置。
public class MyBean implements BeanNameAware {@Overridepublic void setBeanName(String name) {// 获取 Bean 的名称}
}

4. BeanPostProcessor 的前置处理

  • 接口BeanPostProcessor.postProcessBeforeInitialization()
  • 作用:在初始化方法(如 @PostConstruct)之前执行自定义逻辑。
  • 典型应用:AOP 代理的生成、监控埋点等。

5. 初始化(Initialization)

初始化逻辑按顺序执行:

  1. @PostConstruct 注解:JSR-250 标准,标记初始化方法。
  2. InitializingBean.afterPropertiesSet():Spring 提供的初始化接口。
  3. 自定义 init-method:通过 XML 或 @Bean(initMethod = "init") 指定。
public class MyBean {@PostConstructpublic void postConstruct() {// 初始化逻辑}public void init() {// XML 或 @Bean 指定的初始化方法}
}

6. BeanPostProcessor 的后置处理

  • 接口BeanPostProcessor.postProcessAfterInitialization()
  • 作用:在初始化方法之后执行自定义逻辑。
  • 典型应用:最终代理对象的包装(如 Spring AOP)。

7. Bean 就绪(Ready)

  • 此时 Bean 已完全初始化,可被应用程序使用。
  • 作用域影响
    • Singleton:容器中只有一个实例。
    • Prototype:每次请求都生成新实例(销毁需手动处理)。
    • 其他作用域(Request、Session 等):生命周期与会话或请求绑定。

8. 销毁(Destruction)

销毁逻辑按顺序执行:

  1. @PreDestroy 注解:JSR-250 标准,标记销毁方法。
  2. DisposableBean.destroy():Spring 提供的销毁接口。
  3. 自定义 destroy-method:通过 XML 或 @Bean(destroyMethod = "destroy") 指定。
public class MyBean {@PreDestroypublic void preDestroy() {// 销毁逻辑}public void destroy() {// XML 或 @Bean 指定的销毁方法}
}

完整生命周期流程图

实例化 → 属性注入 → Aware 接口 → BeanPostProcessor 前置处理 → 
@PostConstruct → InitializingBean → init-method → 
BeanPostProcessor 后置处理 → 使用中 → 
@PreDestroy → DisposableBean → destroy-method

扩展点与注意事项

  1. BeanFactoryPostProcessor
    • 在 Bean 定义加载后、实例化前修改 Bean 的定义(如修改属性值)。
  2. BeanDefinitionRegistryPostProcessor
    • 更早阶段注册额外的 Bean 定义。
  3. 作用域差异
    • Prototype Bean 的销毁需手动调用 ctx.getBeanFactory().destroyBean(bean)
  4. 循环依赖
    • 通过三级缓存解决(仅限 Singleton Bean)。

示例代码

public class LifecycleBean implements BeanNameAware, InitializingBean, DisposableBean {private String name;@Overridepublic void setBeanName(String name) {this.name = name; // BeanNameAware 回调}@PostConstructpublic void postConstruct() {System.out.println("@PostConstruct 方法");}@Overridepublic void afterPropertiesSet() {System.out.println("InitializingBean.afterPropertiesSet()");}public void customInit() {System.out.println("自定义 init-method");}@PreDestroypublic void preDestroy() {System.out.println("@PreDestroy 方法");}@Overridepublic void destroy() {System.out.println("DisposableBean.destroy()");}public void customDestroy() {System.out.println("自定义 destroy-method");}
}

通过理解 Spring Bean 的生命周期,我们可以更精准地控制 Bean 的初始化与销毁过程,优化资源管理和扩展框架功能。

http://www.15wanjia.com/news/15306.html

相关文章:

  • 深圳网站建设简介人脉推广app
  • 海外培训视频网站建设广告竞价排名
  • 网站建设 服务器百度百科词条
  • 网站页面设计成品下载大学生创新创业大赛
  • 怎样做网站标题优化公司网站搭建流程
  • 如何做好一名网络销售深圳网站优化网站
  • 足球彩票网站开发太原百度快速优化排名
  • 网站建设图文汕头网站排名优化
  • 前端网页模板seo职位描述
  • wordpress路由重写宁波seo外包快速推广
  • 同城app开发多少钱济南seo网站优化
  • 拍卖网站建设需求国产搜什么关键词最好看
  • 建立企业网站的形式有哪几种北京seo薪资
  • 兰州市住房和建设局网站线下推广的渠道和方法
  • 山东网站建站建设茂名seo快速排名外包
  • 小网站关键词公众号推广接单平台
  • 揭阳网站制作找哪家谷歌seo顾问
  • 钱宝网站怎么做任务青岛专业网站制作
  • 上色的网站下载免费公司广告推广方案
  • 整形医院网站制作手机优化是什么意思
  • 如何做中英文网站设计广东网站seo
  • php网站设计广州网站推广排名
  • 西安专用网站建设怎么用模板做网站
  • 海阳市住房和城乡建设局官方网站网站快速推广
  • 电子商务网站建设与管理试题及答案汕头网站建设技术外包
  • 做简历有什么网站台州做优化
  • 好网站不收藏头条搜索
  • 成都捕鱼网站建设刷粉网站推广便宜
  • net网站开发net网站开发搜索引擎的使用方法和技巧
  • 太原网站建设的公司排名aso安卓优化公司