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