当前位置:网站首页>注解@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的功能,对属性进行匹配赋值。
边栏推荐
- Basic data types and string types are converted to each other
- 2-3查找树
- 接口作为参数(接口回调)
- [kuangbin] topic 15 digit DP
- National SMS center number inquiry
- Automatic upgrading of database structure in rainbow
- MES系統,是企業生產的必要選擇
- The single value view in Splunk uses to replace numeric values with text
- Opencv learning notes 1 -- several methods of reading images
- Qt Charts使用(重写QChartView,实现一些自定义功能)
猜你喜欢

Openvscode cloud ide joins rainbow integrated development system

数据分析方法论与前人经验总结2【笔记干货】

Train your dataset with swinunet

Open3d ISS key points

为什么要选择云原生数据库

2-3查找树

Rapid integration of authentication services - harmonyos platform

Obsidan之数学公式的输入

Fluentd is easy to use. Combined with the rainbow plug-in market, log collection is faster

Learn how to compile basic components of rainbow from the source code
随机推荐
JS的操作
DeiT学习笔记
Arm GIC (IV) GIC V3 register class analysis notes.
如何在HarmonyOS应用中集成App Linking服务
rsync远程同步
Thirteen forms of lambda in kotlin
The field value in Splunk subquery fuzzy matching CSV is*
Opencv learning notes 1 -- several methods of reading images
A single game with goods increased by 100000, and the rural anchor sold men's clothes on top of the list?
GFS分布式文件系统
[Yu Yue education] C language programming reference of Zhongbei College of Nanjing Normal University
Required String parameter ‘XXX‘ is not present
Snyk dependency security vulnerability scanning tool
Interface as a parameter (interface callback)
调用华为游戏多媒体服务的创建引擎接口返回错误码1002,错误信息:the params is error
[untitled]
[Chongqing Guangdong education] organic electronics (Bilingual) reference materials of Nanjing University of Posts and Telecommunications
Snyk 依赖性安全漏洞扫描工具
Improve the delivery efficiency of enterprise products (1) -- one click installation and upgrade of enterprise applications
Calling the creation engine interface of Huawei game multimedia service returns error code 1002, error message: the params is error