SpringIoc[1.基础知识]

一、前言
SpringIoc容器提供基本的依赖注入服务以及Bean实例缓存、生命周期管理、Bean实例代理、事件发布、资源装载等高级服务

BeanFactory(IoC容器):提供Ioc配置机制,是Spring框架的基础设施,面向Spring本身;

ApplicationContext(应用上下文或Spring容器):提供面向应用的功能,面向Spring框架的开发者;

二、使用

1.BeanFactory(作为心脏)

     FileSystemResource fsr = new FileSystemResource("xxx");
     BeanFactory bf = new XmlBeanFactory(fsr);
     bf.getBean("yyy");

2.ApplicationContext(作为躯壳)

ApplicationContext由BeanFactory派生;
BeanFactory中需要编程实现的功能在ApplicationContext中通过配置得到;
常用:ClassPathXmlApplicationContext(从类路径加载)和FileSystemXmlApplicationContext(从系统文件系统加载)

     ApplicationContext context = new ClassPathXmlApplicationContext("xxx");
     context.getBean("yyy");

Spring3.0新增AnnotationConfigApplicationContext
     ApplicationContext contextNew = new AnnotationConfigApplicationContext();

Web相关的WebApplicationContext
需要依赖Web容器启动
     WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(...);


三、Bean周期

1.容器寻找Bean的定义信息并且将其实例化;

2.执行依赖注入,Spring按照Bean定义信息注入Bean的所有属性;

3.如果Bean实现了BeanNameAware接口,工厂调用Bean的setBeanName()方法,并传递Bean的ID作为参数;

4.如果Bean实现了BeanFactoryAware接口,工厂调用setBeanFactory()方法传入工厂自身;

5.如果BeanPostProcessor和Bean关联,那么它们的postProcessBeforeInitialzation()方法将被调用;

6.如果Bean实现了InitializingBean接口,afterPropertiesSet()方法会被调用; 
     如果Bean指定了init-method属性,init-method属性指定的方法将被调用;
     如果InitializingBean和init-method属性同时出现,前者先于后者执行;

7.如果有BeanPsotProcessor和Bean关联,那么它们的postProcessAfterInitialization()方法将被调用;
     到这个时候,Bean已经可以被应用系统使用了,并且将被保留在BeanFactory中直到它不再需要;


8.最后当关闭应用时,Bean Factory会调用destroySingletons()方法,这时,会执行:
     如果Bean实现了DisposableBean接口,destory()方法会被调用;
     如果指定了destroy-method属性,destroy-method属性指定的方法将被调用;
     如果DisposableBean和destroy-method属性同时出现,前者先于后者执行;

注:只有singleton行为的bean接受容器管理生命周期,non-singleton行为的bean,Spring容器仅仅是new的替代,容器只负责创建;




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值