springboot如何通过@Value,@ConfigurationProperties获取配置

网友投稿 330 2022-08-19


springboot如何通过@Value,@ConfigurationProperties获取配置

目录通过@Value,@ConfigurationProperties获取配置spring boot 获取配置项值通过@Value 获取值通过@ConfigurationProperties 获取值 说下@ConfigurationProperties和@Value区别配置文件注入值数据校验

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

说下@ConfigurationProperties和@Value区别

@Configuration@Value功能批量注入配置文件中的属性一个个指定松散绑定(松散语法)支持不支持SPEL语法不支持支持jsR303数据校验支持不支持复杂类型封装支持不支持

配置文件yml还是properties他们都能获取到值;

如果说, 只是在某个业务逻辑中需要获取一项配置文件中的某项值, 使用@Value

如果说,专门编写了一个javaBean 来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

配置文件注入值数据校验

@Component

@ConfigurationProperties(prefix = "person")

@Validated

public class Person {

/**

*

*

*

*/

//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 maps;

private List list;

private Dog dog;


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一步步教你写一个SpringMVC框架
下一篇:springboot 自定义配置Boolean属性不生效的解决
相关文章

 发表评论

暂时没有评论,来抢沙发吧~