spring boot 通过@Value,@ConfigurationProperties获取配置

使用版本是1.5.4

 

举例一个线程池的配置: 

1、在application.yml添加配置项及值

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

2、通过@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;
    }
}

3、通过@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;
    }
}

通过@ConfigurationProperties加载配置文件,将配置项与bean及属性关联,指定ignoreUnknownFields当有属性未匹配到值时会抛出异常,用prefix指定配置项的前缀。

@ConfigurationProperties还支持层级结构、 布尔、集合等类型的值注入 
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-typesafe-configuration-properties