#springboot 如何实现自动化配置
你肯定常常使用@EnableAutoConfiguration 这个注解,你可能会说没有啊?那么细心的你会发现
@SpringbootApplication 中有这上边的这个注解。
其实底层是AutoConfigerationImportSlector 这个类去实现的
META-INF/spring.factories
其实springboot 都是拿一些条件注解去编程进行实现
@Conditional
@ConditionalOnClass
@ConditionalOnBean
@ConditionalOnMissingBean
@ConditionalOnProperty
Tips :
如果想观察那些类自动配置或者排除掉了,可以在run param 配置 –debug 参数,这样就会生成一个的报告.
springboot中有好多分析器,你可以通过上边的报告看出来。去看看他们的实现,以便完成自己项目启动时候的分析。
@Conditional注解是spring4 才出现的,那么spring3的版本怎么去实现上述的自动化配置呢?
##核心思路 BeanFactoryPostProcessor + java Config + @component-scan
- BeanFactoryPostProcessor 针对bean 定义 进行判断 ,容器创建Bean前获取配置元信息。
- javaConfig 中需要定义为static 方法
- BeanPostProcessor 针对bean 实例
##关于bean 的一些定制
Lifecycle callback
InitializingBean 、@postConstruct、init-method 、DisposableBean 、@PreDestroy 、destroy-method
XxxAware 接口 - ApplicationContextAware
- BeanFactoryAware
- BeanNameAware
##一些Bean 常用操作
###判断类是否存在