我們有時候會遇到一些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並沒有將配置中的注入