SpringBoot自定義條件註解配置

本篇介紹下,如何經過springboot的自定義條件配置,控制Bean的建立html

  • 介紹下開發環境
    • JDK版本1.8
    • springboot版本是1.5.2
    • 開發工具爲 intellij idea(2018.2)
    • 開發環境爲 15款MacBook Pro

前言

不少時候,咱們在公司用springboot做爲基礎框架開發項目的時候,會碰見建立某個Bean的時候,須要一些條件來做爲前置,這時候,Spring默認的條件配置,已經不知足條件了,須要自定義條件配置,這時候咱們能夠經過條件配置接口,自定義規則來判斷是否建立Beanjava


如何弄自定義條件配置呢?

此次,咱們只在條件註解項目內的 @Conditional 配合 @Bean 作演示,沒看過上篇 SpringBoot條件配置的同窗,能夠點擊這裏點我,直達SpringBoot條件配置git

  1. 咱們先建立三個普通的類,前置條件爲,要建立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");
        }
    }
  2. 建立一個自定義配置的配置類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;
        }
    }
  3. 而後咱們在啓動類,增長以下配置框架

    @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();
    	}
    }
  4. 而後咱們啓動啓動類,看到以下日誌打印,說明條件配置生效了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條件配置

到這,文章就結束了!

以上,均爲本人測試而得出的結果,可能會有出入,或者錯誤,歡迎指正

歡迎轉載,請註明出處跟做者,謝謝!

相關文章
相關標籤/搜索