Spring(三)---容器与生命周期

所谓装配(wiring),就是将组件状态到Spring容器中,并且在这些组件建立联系。

 

(一)BeanFactory vs ApplicationContext

Spring有两种容器:BeanFactory,ApplicationContext.其中ApplicationContext是BeanFactory的子接口。

BeanFactory使用工厂模式,用来创建和分配bean,它面向简单应用,常常用到的XmlBeanFactory是BeanFactory的一个重要实现,它应用于使用xml文件进行配置bean的应用。另外BeanFactory也参与Bean的生命周期,包含调用初始化和消亡相关的方法。

相关的方法举例:

BeanFactory beanFactory = new XmlBeanFactory(new FileInputStream("hello.xml"));

AClass aObject = (AClass)beanFactory.getBean("aId");

这样,aId对应的bean在Spring容器中的生命周期就开始了。

而ApplicationContext和BeanFactory类似,它有3个常用的实现:ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,XmlWebApplicationContext

而ApplicationContext和BeanFactory的区别在于

1.BeanFactory中,当创建对应的BeanFactory时,bean并不会被构造,它们只会在需要时才会被构造出来;而ApplicationContext会在开始时对所有的单例(Singleton)bean进行预装载。

2.ApplicationContext还提供了其他的服务,例如,提供解决文本消息的方法,包含对这些方法的国际化;提供装载文件资源的generic方法;可以给bean发布事件,它具有更强大的功能,因此,在实际应用中使用更多。

(二)bean的生命周期

bean在可用之前,经过的步骤:

1.容器找到bean并进行实例化

2.利用依赖注入,Spring会设置bean的属性

3.如果Bean实现了BeanNameAware接口,那么容器会调用对应setBeanName()方法

4.如果bean实现了BeanFactoryAware(/ApplicationContextAware)接口,那么会调用对应的setBeanFactory()(setApplicationContext())方法

5.如果这个bean于任何BeanPostProcessor相关,那么调用对应的postProcessorBeforeInitialization()方法

6.如果init-method被指定,那么对应方法会被调用

7.如果bean与任何BeanPostProcessor相关,则调用对应的postProcessorAfterInitialization方法会被调用

经过这7个步骤后,bean就可以用了

当容器关闭时

1.如果bean实现了DisposableBean,那么对应的destroy()方法将被调用

2.如果destroy-method被指定,那么对应方法将被调用

经过这两步,bean就被销毁了

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值