spring:
依赖注入:
1.注入方式:1.set方法 2.构造方法
2.自动注入(注入模型):no,bytype,byname,construction(不适用xml配置,但有构造方法,会自动注入)(一般是XML配置使用,auto-waired=‘bytype’)
3.@Autowired理解为手动注入和自动注入没关系(4点为解释),先找类型再找名称,@Resource手动注入,先名称再类型,@Autowired为spring提供,@Resource为JDK提供,解析后置处理器不一样(@qualifier根据名称注入)
4.abstrcatBeanDefination中参数autowireMode在使用@Autowired和@Resource的时候为0(不具有任何自动注入方式)
5.@lookup能在单列中注入原型
生命周期:
Bean的生命周期:
1:方法注解:@PostConstruct and @PreDestroy annotations
2:实现 InitializingBean and DisposableBean接口
3:xml中的init-method:Custom init() and destroy() methods
执行顺序为1.2.3(注解为一个后置处理器处理,执行后置处理器之后调用方法执行接口配置,然后xml)
容器生命周期:
实现Lifecycle ,问题,需要手动调用stop,start
实现smartLifecycle,自动调用start方法,自动调用含CallBack参数的Stop函数
动态向spring添加对象:
如何将一个对象放入spring
1:@bean
2:实现FactoryBean,会将getObject返回对象放入容器。getBean(实现类名称)返回的就是getObject返回的对象
3:ac.getRigester.rigest(new a())(容器实例化完成之后,不好解决以来问题)