学会@ConfigurationProperties月薪过三千
学习 @ConfigurationProperties 之前我们需要一些前置知识点:
首先明确:@ConfigurationProperties 是 SpringBoot 注解。
我们在讲 @Value 时知道了如何将配置文件的属性注入到变量中,废话不多说,直接上代码。
这是配置文件配置:
spring.datasource.dynamic.mysql.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.mysql.url=jdbc:mysql://localhost:3306/db1
spring.datasource.dynamic.mysql.username=root
spring.datasource.dynamic.mysql.password=root
麻烦?
没事,有简单的,我们用简单的:
spring:
datasource:
dynamic:
mysql:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db1
username: root
password: root
使用 @Value 获取配置:
@Configuration
public class DynamicDataSourceConfig {
@Value("${spring.datasource.dynamic.mysql.driverClassName}")
private String driverClassName;
@Value("${spring.datasource.dynamic.mysql.url}")
private String url;
@Value("${spring.datasource.dynamic.mysql.username}")
private String username;
@Value("${spring.datasource.dynamic.mysql.password}")
private String password;
}
写完之后整整齐齐,帅!
如果有人觉得帅,一定还没成长成一个合格的程序员。
我们程序员追求什么?
优雅。
优雅永不过时。
优雅最重要的一条原则是什么?
不写重复代码!
所以怎么办?
有办法。
下面我们讲一下 @ConfigurationProperties 。
作用
将标注了 @ConfigurationProperties 注解的Spring容器中的Bean与配置文件中的属性进行一一绑定,用于更加快速、方便的读取配置文件的内容。
使用方式一:@Component
直接上代码:
@Component
@ConfigurationProperties(prefix = "spring.datasource.dynamic.mysql")
@Data
public class DynamicDataSourceConfig {
private String driverClassName;
private String url;
private String username;
private String password;
}
写完之后清清爽爽,帅!
我们发现了几个关键点:
1.原来的 @Configuration 变成了 @Component
这个不影响,因为 @Configuration 中包含了 @Component,这里主要强调通过@Component注解将其注册成Bean。
2.@ConfigurationProperties(prefix = "")
这是我们的主角,prefix 就是匹配我们属性值的前缀,有了它我们就少写好多代码。
3.多了个@Data
@Data的功能中包含了setter方法,没有setter怎么赋值?!
使用方式二:@EnableConfigurationProperties
WTF is @EnableConfigurationProperties?
@EnableConfigurationProperties 就是:
@ConfigurationProperties,启动!
如果配置类只配置了 @ConfigurationProperties 注解,而没有使用@Component,也就是在IOC容器中是获取不到bean。
那就需要 @EnableConfigurationProperties 把使用 @ConfigurationProperties 的类进行了一次注入。
怎么用呢?
需要与@Configuration一起使用。
需要与@Configuration一起使用。
需要与@Configuration一起使用。
上代码:
@ConfigurationProperties(prefix = "father")
@Data
public class Father {
private String name;
}
@Configuration
@EnableConfigurationProperties(Father.class)
public class MainConfig {
}
实际开发中可能更多的写在 Application 启动类上。
这时候 A 同学问了:
那启动类上没有 @Configuration 啊?
有的,@SpringBootApplication 也是一个@Configuration。
又有 B 同学问了:
那我有两个配置类怎么写呢?
哎?好办。
@Configuration
@EnableConfigurationProperties(Father.class, Son.class)
public class MainConfig {
}
又有 C 同学问了:
那我有 100 个配置类呢?
聪明的 B 同学说:
我知道我知道!
@Configuration
@EnableConfigurationProperties(Father.class, Son.class, GrandSon.class, GrandgrandSon.class...)
public class MainConfig {
}
...
不愧是你。
那怎么办呢?
也有办法。
使用方式三:@ConfigurationPropertiesScan
SpringBoot 2.2.0版本以后提供了这个注解。
这个注解加到启动类上,注明包路径。
系统就会扫描这个包路径下的所有包含 @ConfigurationProperties 注解的配置类。
如果不写包路径,就默认扫描启动类所在包及其子包。
这样就不用写一百个类了。
@SpringBootApplication
@ConfigurationPropertiesScan
public class DemoAnnotationApplication {
public static void main(String[] args) {
SpringApplication.run(DemoAnnotationApplication.class, args);
}
}
差不多了吧?
什么?小明,你有话说?
那既然 @Component 能注册成 Bean,那我使用 @Configuration 加 @Bean 注册又怎么说?
卧槽,还有高手?
使用方式四:@Bean
@Data
public class Animal {
private String name;
}
@Configuration
public class MainConfig {
@Bean
@ConfigurationProperties(prefix = "animal")
public Animal getAnimalBean() {
return new Animal();
}
}
animal.name=Wangcai
还有高手吗?
下课!
联系我:
学会@ConfigurationProperties月薪过三千的更多相关文章
- 正在找工作的同学看过来,zozo最新的java面试题总会,学会月薪3万起!!!
引言 为正在找工作的同学提供些许帮助,话不多说直接上题. 关注后私信我[资料]即可免费获取! 关注后私信我[资料]即可免费获取! 关注后私信我[资料]即可免费获取! 关注后私信我[资料]即可免费获取! ...
- 前端程序员:月薪 5K 到 5 万,我干了啥(转)
转自:http://www.imooc.com/article/4110 前端程序员:月薪 5K 到 5 万,我干了啥前端开发工作已经变的越来越复杂,仅仅是想罗列一份前端开发的学习列表就已经是一件艰巨 ...
- @Import @bean,@Conditional @ConfigurationProperties @EnableConfigurationProperties 注解使用
一分钟学会spring注解之@Import注解http://blog.51cto.com/4247649/2118354 @Autowired与@Resource 注解的使用 https://www. ...
- 大厂程序员因厌恶编程,辞去月薪2w+的工作去当司机?
世界好小啊,刚在一个 UP 主的群里看到一个视频,标题叫做:"失业了工作没找到,却稀里糊涂上了知乎热搜,2000 多万人围观,我--" 说实话,看到视频的封面,我的下巴当时就掉到了 ...
- 毕业三年,如何达到月薪30K?我想跟你聊聊!!
写在前面 很多读者私信问我,自己工作三多年了,随着工作年限的不断增长,感觉自己的技术水平与自己的工作年限严重不符.想跳槽出去换个新环境吧,又感觉自己的能力达不到心仪公司的标准,即使投了简历也没人来通知 ...
- 跟你说个笑话,硕士毕业两年,月薪10k,天天面向CV编程
"枯燥乏味的一天,又tm要开始了". 早上10:00,程序员毛毛带着路上买的早餐,打开24英寸的显示屏,去某论坛查一下昨天没有解决的bug. 9 个小时增删改查.搬砖写代码的一天又 ...
- 说实话,Android开发月薪3W,谁不酸呢?
近期有个网友在某匿名区晒字节跳动Offfer,毕业一年月薪3W,引发众多读者羡慕,纷纷留言酸了.酸了.但进大厂的要求还是蛮高的,需要在技术实力上有一定的积累,今天给大家分享一份高质量笔记, 助力大家技 ...
- [C#] C# 知识回顾 - 学会处理异常
学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...
- [C#] C# 知识回顾 - 学会使用异常
学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...
- 让你从零开始学会写爬虫的5个教程(Python)
写爬虫总是非常吸引IT学习者,毕竟光听起来就很酷炫极客,我也知道很多人学完基础知识之后,第一个项目开发就是自己写一个爬虫玩玩. 其实懂了之后,写个爬虫脚本是很简单的,但是对于新手来说却并不是那么容易. ...
随机推荐
- Solution -「THUPC 2021」区间矩阵乘法
Description Link. 给定长度为 \(n\) 的序列 \(a_1, a_2, \dots, a_n\):共 \(m\) 组询问,每次询问给出 \(d,p_1,p_2\),求 \[\sum ...
- mpi转以太网连接300PLC实现以太网通信配置方法
西门子S7300PLC连接MPI-ETH-XD1.0实现以太网通信配置方法 产品简介 兴达易控MPI-ETH-XD1.0用于西门子S7-200/SMART S7-200/S7-300/S7-400/西 ...
- SpringBoot WebSocket STOMP
SpringBoot WebSocket STOMP 关键词:Springboot, WebSocket, STOMP, broadcast, sendToUser, MessageMapping, ...
- MySQL——MySQL面试题
文章目录 数据库基础知识 为什么要使用数据库 什么是SQL? 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 MySQL的binlog有有几种录入格式?分别有什么区别? 数 ...
- 两台实体机器4个虚拟机节点的Hadoop集群搭建(Ubuntu版)
安装Ubuntu Linux元信息 两台机器,每台机器两台Ubuntu Ubuntu版本:ubuntu-22.04.3-desktop-amd64.iso 处理器数量2,每个处理器的核心数量2,总处理 ...
- 微信小程序:音乐播放器
音乐资源使用的是QQ音乐资源.图片资源使用的网易云音乐的专辑图片. HTML: <view class="container"> <div wx:for=&quo ...
- 测试技术:开源测试工具 jenkins、Sonar
http://www.cnblogs.com/itech/archive/2011/11/23/2260009.html Jenkins入门总结 基于 Jenkins 快速搭建持续集成环境 https ...
- TIOBE 11月榜单:Java和 C# 之间的差距缩小到0.7
TIOBE 公布了 2023 年 11 月的编程语言排行榜. 虽然这期重点介绍的是Kotlin,本月,它的排名上升了 0.17%,从第 18 位上升到第 15 位,前进了 3 位. TIOBE的10月 ...
- 中龙技术 | HSCSEC CRY + MISC WP
CRYPTO[HSC-1th] Easy SignIn 5445705857464579517A4A48546A4A455231645457464243566B5579556C7053546C4A4E ...
- Python利用pandas进行数据合并
当使用Python中的pandas库时,merge函数是用于合并(或连接)两个数据框(DataFrame)的重要工具.它类似于SQL中的JOIN操作,允许你根据一个或多个键(key)将两个数据框连接起 ...