Fork me on GitHub

springboot的自动化配置

#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 常用操作

###判断类是否存在

  • ClassUtils.isPresent()

    判断bean是否定义

  • ListableBeanFactory.containsBeanDefinition()
  • ListableBeanFactory.getBeanNameForType()
    ###注册Bean定义
  • BeanDefinitionRegistry.registerBeanDefinition()
    • GenericBeanDefinition
  • BeanFactory.registerSingleton()

本文欢迎转载,但是希望注明出处并给出原文链接。 如果你有任何疑问,欢迎在下方评论区留言,我会尽快答复。 如果你喜欢或者不喜欢这篇文章,欢迎你发邮件到 alonecong@126.com 告诉我你的想法,你的建议对我非常重要。

------ 本文结束感谢您的阅读! ------
0%