微前端架构如何改变企业的开发模式与效率提升
1105
2022-10-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必须为邮箱格式
private String lastName;
//@Value("#{11*2}")
private Integer age;
//@Value("true")
private Boolean boss;
private Date birth;
private Map
private List
private Dog dog;
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~