Spring 四中bean装配模型
NO
byType
byName
byConstructor
官网说是针对 xml配置的。其实不完全正确。
应该是:xml提供了配置入口。
@Autowire 这个可以通过后置处理器,在beandefinitioan里设置autowireMode(int)
@Autowired与上面四种的区别是,他可以通过field.set 反射来装配。其他的需要 setXXX方法。
populaBan
spring 生命周期中,先拿到后置处理器处理,处理
@PostConstruct
注解,再处理
initMethod。initMethod会依次处理(afterPropertiesSet) 接口方法,和xml配置 的方法。
- smartlifeCycle
isAutoStartUp 一旦容器开始就调用start()方法
容器停止会调用stop(runnalble callback )
包:
spring-context-indxer
容器索引
在大型项目的时候用于加载预处理。
javax.inject
@Inject @Name
- FactoryBean 与Bean的区别
初始化时机不同。
什么是 factoryBean?
- 本身是一个Bean,getObject()也是一个bean
2
问题: 如何将一个对象放到spring容器中?
- factoryBean (一般跟第三方jar包结合 : nacosDataSourceFactoryBean)
- @Bean (手动业务类操作放到spring里。)
- applicationContext.getBeanFactory().registerSingleTon(“”, Object); –(有依赖的时候作用比较大。)
applicationContext.getBean(“factoryBean”); 获取的 是这个bean中getObject()的对象。
applicationContext.getBean(“&factoryBean”); 获取的是factoryBean