欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用@ConditionalOnProperty控制是否加載的操作

 更新時間:2021年06月11日 15:44:42   作者:純真-Cloud  
這篇文章主要介紹了使用@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)文章

最新評論