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

springboot如何通過(guò)@Value,@ConfigurationProperties獲取配置

 更新時(shí)間:2022年03月18日 17:24:47   作者:darkwb09  
這篇文章主要介紹了springboot如何通過(guò)@Value,@ConfigurationProperties獲取配置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

通過(guò)@Value,@ConfigurationProperties獲取配置

spring boot 獲取配置項(xiàng)值

使用版本是1.5.4

舉例一個(gè)線程池的配置:

在application.yml添加配置項(xiàng)及值

? ? # 線程池配置
? ? taskexecutor:
? ? ? corePoolSize: 5
? ? ? maxPoolSize: 10
? ? ? queueCapacity: 25

通過(guò)@Value 獲取值

@Configuration
@EnableAsync
public class ExecutorConfig {
? ? @Value("${taskexecutor.corePoolSize}")
? ? private int corePoolSize;
? ? @Value("${taskexecutor.maxPoolSize}")
? ? private int maxPoolSize;
? ? @Value("${taskexecutor.queueCapacity}")
? ? private int queueCapacity;
? ? @Bean
? ? public Executor getAsyncExecutor() {
? ? ? ? ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
? ? ? ? executor.setCorePoolSize(corePoolSize);
? ? ? ? executor.setMaxPoolSize(maxPoolSize);
? ? ? ? executor.setQueueCapacity(queueCapacity);
? ? ? ? executor.setThreadNamePrefix("TaskExecutor-");
? ? ? ? executor.initialize();
? ? ? ? return executor;
? ? }
? ? }

通過(guò)@ConfigurationProperties 獲取值 

? ? @Configuration
? ? @EnableAsync
? ? @ConfigurationProperties(ignoreUnknownFields = false,prefix = "taskexecutor")
? ? public class ExecutorConfig {
? ? private int corePoolSize;
? ? private int maxPoolSize;
? ? private int queueCapacity;
? ? @Bean
? ? public Executor getAsyncExecutor() {
? ? ? ? ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
? ? ? ? executor.setCorePoolSize(corePoolSize);
? ? ? ? executor.setMaxPoolSize(maxPoolSize);
? ? ? ? executor.setQueueCapacity(queueCapacity);
? ? ? ? executor.setThreadNamePrefix("TaskExecutor-");
? ? ? ? executor.initialize();
? ? ? ? return executor;
? ? }
? ? }

通過(guò)@ConfigurationProperties加載配置文件,將配置項(xiàng)與bean及屬性關(guān)聯(lián),指定ignoreUnknownFields當(dāng)有屬性未匹配到值時(shí)會(huì)拋出異常,用prefix指定配置項(xiàng)的前綴。

@ConfigurationProperties還支持層級(jí)結(jié)構(gòu)、 布爾、集合等類型的值注入

http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-typesafe-configuration-properties

說(shuō)下@ConfigurationProperties和@Value區(qū)別

 @Configuration@Value
功能批量注入配置文件中的屬性一個(gè)個(gè)指定
松散綁定(松散語(yǔ)法)支持不支持
SPEL語(yǔ)法不支持支持
JSR303數(shù)據(jù)校驗(yàn)支持不支持
復(fù)雜類型封裝支持不支持

配置文件yml還是properties他們都能獲取到值;

如果說(shuō), 只是在某個(gè)業(yè)務(wù)邏輯中需要獲取一項(xiàng)配置文件中的某項(xiàng)值, 使用@Value

如果說(shuō),專門編寫了一個(gè)javaBean 來(lái)和配置文件進(jìn)行映射,我們就直接使用@ConfigurationProperties;

配置文件注入值數(shù)據(jù)校驗(yàn)

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
 
    /**
     * <bean class="Person">
     *      <property name="lastName" value="字面值/${key} 從環(huán)境變量,配置文件中獲取值/#{Spel}"></property>
     * </bean>
     */
    //Value("${person.last-name}")
    //lastName必須為郵箱格式
    @Email
    private String lastName;
    //@Value("#{11*2}")
    private Integer age;
    //@Value("true")
    private Boolean boss;
    private Date birth;
    private Map<String, Object> maps;
    private List<Object> list;
    private Dog dog;

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論