当前位置:网站首页>注解@ConfigurationProperties的三种使用场景
注解@ConfigurationProperties的三种使用场景
2022-07-07 05:56:00 【梦及海深@无】
在Spring Boot中注解@ConfigurationProperties有三种使用场景,而通常情况下我们使用的最多的只是其中的一种场景。本篇文章带大家了解一下三种场景的使用情况。
场景一
使用@ConfigurationProperties和@Component注解到bean定义类上,这里@Component代指同一类实例化Bean的注解。
基本使用实例如下:
// 将类定义为一个bean的注解,比如 @Component,@Service,@Controller,@Repository
// 或者 @Configuration
@Component
// 表示使用配置文件中前缀为user1的属性的值初始化该bean定义产生的的bean实例的同名属性
// 在使用时这个定义产生的bean时,其属性name会是Tom
@ConfigurationProperties(prefix = "user1")
public class User {
private String name;
// 省略getter/setter方法
}
对应application.properties配置文件内容如下:
user1.name=Tom
在此种场景下,当Bean被实例化时,@ConfigurationProperties会将对应前缀的后面的属性与Bean对象的属性匹配。符合条件则进行赋值。
场景二
使用@ConfigurationProperties和@Bean注解在配置类的Bean定义方法上。以数据源配置为例:
@Configuration
public class DataSourceConfig {
@Primary
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
}
这里便是将前缀为“spring.datasource.primary”的属性,赋值给DataSource对应的属性值。
@Configuration注解的配置类中通过@Bean注解在某个方法上将方法返回的对象定义为一个Bean,并使用配置文件中相应的属性初始化该Bean的属性。
场景三
使用@ConfigurationProperties注解到普通类,然后再通过@EnableConfigurationProperties定义为Bean。
@ConfigurationProperties(prefix = "user1")
public class User {
private String name;
// 省略getter/setter方法
}
这里User对象并没有使用@Component相关注解。
而该User类对应的使用形式如下:
@SpringBootApplication
@EnableConfigurationProperties({User.class})
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
上述代码中,通过@EnableConfigurationProperties对User进行实例化时,便会使用到@ConfigurationProperties的功能,对属性进行匹配赋值。
边栏推荐
- 国标GB28181协议视频平台EasyGBS新增拉流超时配置
- 数据中台落地实施之法
- Give full play to the wide practicality of maker education space
- POJ - 3784 Running Median(对顶堆)
- SSM 整合
- IP guard helps energy enterprises improve terminal anti disclosure measures to protect the security of confidential information
- Download and install orcale database11.2.0.4
- Train your dataset with swinunet
- DeiT学习笔记
- 使用AGC重签名服务前后渠道号信息异常分析
猜你喜欢
Implement your own dataset using bisenet
Using helm to install rainbow in various kubernetes
打通法律服务群众“最后一公里”,方正璞华劳动人事法律自助咨询服务平台频获“点赞”
2-3查找树
One click deployment of highly available emqx clusters in rainbow
IP地址的类别
[hard core science popularization] working principle of dynamic loop monitoring system
GFS分布式文件系统
Learn how to compile basic components of rainbow from the source code
Improve the delivery efficiency of enterprise products (1) -- one click installation and upgrade of enterprise applications
随机推荐
测试踩坑 - 当已有接口(或数据库表中)新增字段时,都需要注意哪些测试点?
Snyk dependency security vulnerability scanning tool
GFS分布式文件系统
Analysis of maker education in innovative education system
打通法律服务群众“最后一公里”,方正璞华劳动人事法律自助咨询服务平台频获“点赞”
The field value in Splunk subquery fuzzy matching CSV is*
go写一个在一定时间内运行的程序
Rainbow 5.7.1 supports docking with multiple public clouds and clusters for abnormal alarms
POJ - 3784 Running Median(对顶堆)
JEditableTable的使用技巧
Calling the creation engine interface of Huawei game multimedia service returns error code 1002, error message: the params is error
ES6_ Arrow function
Splunk query CSV lookup table data dynamic query
2-3查找树
Practice of implementing cloud native Devops based on rainbow library app
Implementation method of data platform landing
Interpreting the practical application of maker thinking and mathematics curriculum
路由信息协议——RIP
What is the method of manual wiring in PCB design in 22protel DXP_ Chengdu electromechanical Development Undertaking
字符串操作