springboot如何通过@Value|springboot如何通过@Value,@ConfigurationProperties获取配置
目录
- 通过@Value,@ConfigurationProperties获取配置
- spring boot 获取配置项值
- 通过@Value 获取值
- 通过@ConfigurationProperties 获取值
- 说下@ConfigurationProperties和@Value区别
- 配置文件注入值数据校验
通过@Value,@ConfigurationProperties获取配置
spring boot 获取配置项值
使用版本是1.5.4
举例一个线程池的配置:
在application.yml添加配置项及值
# 线程池配置taskexecutor:corePoolSize: 5maxPoolSize: 10queueCapacity: 25
通过@Value 获取值
@Configuration@EnableAsyncpublic class ExecutorConfig {@Value("${taskexecutor.corePoolSize}")private int corePoolSize; @Value("${taskexecutor.maxPoolSize}")private int maxPoolSize; @Value("${taskexecutor.queueCapacity}")private int queueCapacity; @Beanpublic Executor getAsyncExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(corePoolSize); executor.setMaxPoolSize(maxPoolSize); executor.setQueueCapacity(queueCapacity); executor.setThreadNamePrefix("TaskExecutor-"); executor.initialize(); return executor; }}
【springboot如何通过@Value|springboot如何通过@Value,@ConfigurationProperties获取配置】
通过@ConfigurationProperties 获取值
@Configuration@EnableAsync@ConfigurationProperties(ignoreUnknownFields = false,prefix = "taskexecutor")public class ExecutorConfig {private int corePoolSize; private int maxPoolSize; private int queueCapacity; @Beanpublic 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数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
如果说, 只是在某个业务逻辑中需要获取一项配置文件中的某项值, 使用@Value
如果说,专门编写了一个javaBean 来和配置文件进行映射,我们就直接使用@ConfigurationProperties;
配置文件注入值数据校验
@Component@ConfigurationProperties(prefix = "person")@Validatedpublic class Person { /***** *///Value("${person.last-name}")//lastName必须为邮箱格式@Emailprivate String lastName; //@Value("#{11*2}")private Integer age; //@Value("true")private Boolean boss; private Date birth; private Map maps; private List
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- SpringBoot实现发送电子邮件
- 如何在中后台领域玩转BFF架构
- 华为云CDN如何提高缓存命中率
- wms系统开源_指南要点(赛事如何玩转开源线上马拉松())
- 大数据|对话阿里云(开源与自研如何共处())
- 数字化时代,如何做好用户体验与应用性能管理
- k8s集群Job负载|k8s集群Job负载 支持多个 Pod 可靠的并发执行,如何权衡利弊选择适合的并行计算模式()
- 不归路之Python|什么是计算机网络(为什么需要网络通信?如何进行网络编程?)
- 通过|通过 AssemblyScript 编写 wasm
- SpringBoot实现前后端、json数据交互以及Controller接收参数的几种常用方式