使用@ConditionalOnProperty控制是否加載的操作
@ConditionalOnProperty控制是否加載
public interface OSService {
void os();
}
@ConditionalOnProperty(prefix = "custom.os", name = "name", havingValue = "linux")
@Service("osService")
public class LinuxService implements OSService {
@Override
public void os() {
System.out.println("Now OS is Linux!");
}
}
@ConditionalOnProperty(prefix = "custom.os", name = "name", havingValue = "windows")
@Service("osService")
public class WindowsService implements OSService {
@Override
public void os() {
System.out.println("Now OS is Windows!");
}
}
@RequestMapping(path = "test")
@RestController
public class TempRestController {
@Autowired
OSService osService;
@PostMapping(path = "condition")
public void condition() {
osService.os();
}
}
配置文件 application.yml:
custom:
os:
name: linux
@ConditionalOnProperty的作用及用法
在spring boot中有時候需要控制配置類是否生效,可以使用@ConditionalOnProperty注解來控制@Configuration是否生效。
配置類代碼:
@Configuration
@ConditionalOnProperty(prefix = "filter",name = "loginFilter",havingValue = "true")
public class FilterConfig {
//prefix為配置文件中的前綴,
//name為配置的名字
//havingValue是與配置的值對比值,當兩個值相同返回true,配置類生效.
@Bean
public FilterRegistrationBean getFilterRegistration() {
FilterRegistrationBean filterRegistration = new FilterRegistrationBean(new LoginFilter());
filterRegistration.addUrlPatterns("/*");
return filterRegistration;
}
}
配置文件中的代碼
filter.loginFilter=true
測試
當配置文件中值為true時:輸出了"過濾器"三個字,說明loginFilter生效了,說明配置類生效了。

當配置文件中值為false時:沒有輸出了"過濾器"三個字,說明loginFilter沒有生效,說明配置類沒有生效。

總結:
通過@ConditionalOnProperty控制配置類是否生效,可以將配置與代碼進行分離,實現(xiàn)了更好的控制配置。
@ConditionalOnProperty實現(xiàn)是通過havingValue與配置文件中的值對比,返回為true則配置類生效,反之失效。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
在Android的應用中實現(xiàn)網絡圖片異步加載的方法
這篇文章主要介紹了在Android的應用中實現(xiàn)網絡圖片異步加載的方法,一定程度上有助于提高安卓程序的使用體驗,需要的朋友可以參考下2015-07-07
Sharding-JDBC自動實現(xiàn)MySQL讀寫分離的示例代碼
本文主要介紹了Sharding-JDBC自動實現(xiàn)MySQL讀寫分離,優(yōu)點在于數(shù)據源完全有Sharding-JDBC托管,寫操作自動執(zhí)行master庫,讀操作自動執(zhí)行slave庫,感興趣的可以了解一下2021-11-11
Spring和MyBatis整合自動生成代碼里面text類型遇到的坑
Spring和MyBatis整合以后,使用自動生成代碼工具生成dao和mapper配置文件。下面通過本文給大家介紹Spring和MyBatis整合自動生成代碼里面text類型遇到的坑,需要的朋友參考下吧2018-01-01
Java開發(fā)之手把手教你搭建企業(yè)級工程SSM框架
這篇文章主要為大家介紹Java教程中搭建企業(yè)級工程SSM框架,手把手的過程操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09
深入淺出分析Java抽象類和接口【功能,定義,用法,區(qū)別】
這篇文章主要介紹了Java抽象類和接口,結合實例形式深入淺出的分析了java抽象類與接口的功能功能,定義,用法及區(qū)別,需要的朋友可以參考下2017-08-08
swagger添加權限驗證保證API(接口)安全性(兩種方法)
這篇文章主要介紹了swagger添加權限驗證保證API(接口)安全性(兩種方法),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01

