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

spring boot 获取配置项值

使用版本是1.5.4

举例一个线程池的配置:
在application.yml添加配置项及值

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

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

通过@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

你可能感兴趣的:(spring-boot)