Java SpringBoot如何实现基于条件的自动配置? -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Java SpringBoot如何实现基于条件的自动配置?

小天使爱美 2020-04-12 22:23:18 358

Java SpringBoot如何实现基于条件的自动配置?

Java
分享到
取消 提交回答
全部回答(2)
  • huc_逆天
    2020-04-12 23:13:47

    SpringBoot的核心就是自动配置,自动配置又是基于条件判断来配置Bean。关于自动配置的源码在spring-boot-autoconfigure-2.0.3.RELEASE.jar SpringBoot运行原理 先看@SpringBootApplication

    @SpringBootConfiguration:标记当前类为配置类 @EnableAutoConfiguration:开启自动配置 @ComponentScan:扫描主类所在的同级包以及下级包里的Bean 关键是@EnableAutoConfiguration 接下来解读下吧。。

    0 0
  • 星尘linger
    2020-04-13 09:06:44

    "基于条件的自动配置来源于Spring框架中“基于条件的配置”这一特性。在Spring框架中,我们可以使用@Conditional这个Annotation配合@Configuration或者@Bean等Annotation来干预一个配置或者bean定义是否能够生效,其最终实现的效果或者语义类似于如下伪代码: if(符合@Conditional规定条件){ 加载当前配置或者注册当前bean定义; } 要实现基于条件的配置,我们只要通过@Conditional指定自己的Condition实现类就可以了(可以应用于类型Type的标注或者方法Method的标注): @Conditional({MyCondition1.class, MyCondition2.class}) 最主要的是,@Conditional可以作为一个Meta Annotation用来标注其他Annotation实现类,从而构建各色的复合Annotation,比如SpringBoot的autoconfigure模块就基于这一优良的革命传统,实现了一批这样的Annotation (位于org.springframework.boot.autoconfigure.condition包下):@Conditional On Class@Conditional On Bean@Conditional On Missing Class@Conditional On Missing Bean@Conditional On Property……有了这些复合Annotation的配合,我们就可以结合@EnableAuto-Configurationn实现基于条件的自动配置了。SpringBoot能够风靡,很大一部分功劳需要归功于它预先提供的一系列自动配置的依赖模块,而这些依赖模块都是基于以上@Conditional复合Annotation实现的,这也意味着所有的这些依赖模块都是按需加载的,只有符合某些特定条件,这些依赖模块才会生效,这也就是我们所谓的“智能”自动配置。"

    0 0
添加回答
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题