【深入理解Spring系列2】自动装配Bean初始化

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?

  1. 本身是一个Bean,getObject()也是一个bean
    2

问题: 如何将一个对象放到spring容器中?

  1. factoryBean (一般跟第三方jar包结合 : nacosDataSourceFactoryBean)
  2. @Bean (手动业务类操作放到spring里。)
  3. applicationContext.getBeanFactory().registerSingleTon(“”, Object); –(有依赖的时候作用比较大。)

applicationContext.getBean(“factoryBean”); 获取的 是这个bean中getObject()的对象。

applicationContext.getBean(“&factoryBean”); 获取的是factoryBean