本篇介紹下,如何經過springboot的自定義條件配置,控制Bean的建立html
不少時候,咱們在公司用springboot做爲基礎框架開發項目的時候,會碰見建立某個Bean的時候,須要一些條件來做爲前置,這時候,Spring默認的條件配置,已經不知足條件了,須要自定義條件配置,這時候咱們能夠經過條件配置接口,自定義規則來判斷是否建立Beanjava
此次,咱們只在條件註解項目內的 @Conditional 配合 @Bean 作演示,沒看過上篇 SpringBoot條件配置的同窗,能夠點擊這裏點我,直達SpringBoot條件配置git
咱們先建立三個普通的類,前置條件爲,要建立SpecialC,須要SpecialA跟SpecialB同時存在IOC中spring
@Component public class SpecialA { private static final Logger LOGGER = LoggerFactory.getLogger(SpecialA.class); public SpecialA() { LOGGER.info("建立 specialA"); } } @Component public class SpecialB { private static final Logger LOGGER = LoggerFactory.getLogger(SpecialB.class); public SpecialB() { LOGGER.info("建立 specialB"); } } @Component public class SpecialC { private static final Logger LOGGER = LoggerFactory.getLogger(SpecialC.class); public SpecialC() { LOGGER.info("建立 specialC"); } }
建立一個自定義配置的配置類springboot
/** * 自定義的條件註解,根據自定義規則, * 配置是否生成某些bean * @author hexiaowu * */ public class SpecialConditionAnnotion implements Condition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { ConfigurableListableBeanFactory beanFactory = context.getBeanFactory(); // 若是存在 specialA跟specialB 則返回true if(beanFactory.containsBean("specailA")&&beanFactory.containsBean("specialB")){ return true; } return false; } }
而後咱們在啓動類,增長以下配置框架
@SpringBootApplication(scanBasePackages = "com.example") public class DemoApplication{ public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } // 新增配置 @Bean // 指定自定義的條件判斷註解Class @Conditional(SpecialConditionAnnotion.class) public SpecialC buildSpecialC(){ return new SpecialC(); } }
而後咱們啓動啓動類,看到以下日誌打印,說明條件配置生效了ide
2018-10-26 23:36:20.589 INFO 5602 --- [ main] c.e.c.specialCondition.SpecialA : 建立 specialA 2018-10-26 23:36:20.591 INFO 5602 --- [ main] c.e.c.specialCondition.SpecialB : 建立 specialB 2018-10-26 23:36:20.592 INFO 5602 --- [ main] c.e.c.specialCondition.SpecialC : 建立 specialC
使用自定義條件配置,咱們須要配置的東西不多,也就新增一個實現Condition接口的類spring-boot
自定義條件配置官方文檔地址以下: 條件配置官方文檔工具
本次介紹的,只是簡單的自定義條件註解的配置,複雜的,須要各位看官本身根據業務來進行配置開發工具
項目源碼,我已經上傳到gitee
須要的朋友,能夠本身點擊查看 springboot條件配置
到這,文章就結束了!
以上,均爲本人測試而得出的結果,可能會有出入,或者錯誤,歡迎指正
歡迎轉載,請註明出處跟做者,謝謝!