@ConditionalOnExpression 控制是否初始bean

我們有時候會遇到一些bean希望通過註冊中心控制是否被初始化,@ConditionalOnExpression可以幫我們辦到。這裏寫過小例子。

1、這個配置是我們上傳文件指定臨時目錄的配置,這裏通過這個查看是否注入成功。在我們想要注入控制註解添加 @ConditionalOnExpression("${is.inject:true}"),通過配置文件來控制是否注入。

@Configuration
public class PropertyConfig {

    @Bean
    @ConditionalOnExpression("${is.inject:true}")
    public MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setLocation("C:\\Users\\Administrator\\Desktop\\deploy");
        return factory.createMultipartConfig();
    }
}

2、在啓動類添加如下代碼進行測試

@SpringBootApplication
public class DynamicElasticjobApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(DynamicElasticjobApplication.class, args);
    }

    @Autowired
    private ApplicationContext applicationContext;
    @Override
    public void run(String... args)  {
        MultipartConfigElement bean = applicationContext.getBean(MultipartConfigElement.class);
        System.out.println("::::::::::::::"+bean.getLocation());
    }
}

3、啓動爲Application類,說明@Bean將其注入。

在這裏插入圖片描述
4、當在配置文件application.properties中寫 is.inject=false時
此時結果爲,說明@Bean並沒有將配置中的注入
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章