Spring Boot设置值:分别用@ConfigurationProperties和@Value给属性设值及其区别
@ConfigurationProperties给属性映射值
编写JavaBean
/*
* 将配置文件application.properties中配置的每一个属性值映射到当前类的属性中;
* @ConfigurationProperties:告诉springboot将本类中所有属性和配置文件中相关的配置进行绑定;
* prefix="person":指出将配置文件中person下的所有属性进行一一映射;
*
* 注意:只有当前这个类是容器中的组件时,才可以用容器提供的@ConfigurationProperties功能;
*
* */
@Component
@ConfigurationProperties(prefix="person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
@Override
public String toString() {
return "Person{" +
"lastName='" + lastName + '\'' +
", age=" + age +
", boss=" + boss +
", birth=" + birth +
", maps=" + maps +
", lists=" + lists +
'}';
}
getter...
setter...
}
编写配置文件
#private String lastName;
#private Integer age;
#private Boolean boss;
#private Date birth;
#
#private Map<String,Object> maps;
#private List<Object> lists;
#配置person的属性值
person.last-name=zhangsan
person.age=18
person.boss=false
person.birth=1992/02/20
person.maps.k1=v1
person.maps.k2=111
person.lists=a,b,c
测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestApplicationConfig {
@Autowired
Person person;
@Test
public void testPersonProperties(){
System.out.println(person);
}
}
运行结果:
@Value给属性设置值
编写JavaBean
@Component
//@ConfigurationProperties(prefix="person")
public class Person {
@Value("${person.last-name}") // 从配置文件中获取值
private String lastName;
@Value("#{2*8}") // spring表达式
private Integer age;
@Value("true") // boolean值
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
@Override
public String toString() {
return "Person{" +
"lastName='" + lastName + '\'' +
", age=" + age +
", boss=" + boss +
", birth=" + birth +
", maps=" + maps +
", lists=" + lists +
'}';
}
}
运行结果:
@ConfigurationProperties和@Value对比
@ConfigurationProperties @Value
功能 根据配置文件中设置的属性,批量注入属性值 单个指定值
松散语法 支持(lastName可以写作last-name、last_name) 不支持
SpEL(Spring表达式) 不支持 支持
JSR303数据校验 支持(可以通过@Email等注解校验属性值是否符合要求) 不支持
复杂类型封装(Map、List等类型) 支持 不支持
应用场景
如果只是某个业务中需要获取配置文件中的某项值或者设置具体值,可以使用@Value;
如果一个JavaBean中大量属性值要和配置文件进行映射,可以使用@ConfigurationProperties;
---------------------
作者:小猴子豆芽菜
来源:CSDN
原文:https://blog.csdn.net/XU906722/article/details/81517429
版权声明:本文为博主原创文章,转载请附上博文链接!
Spring Boot设置值:分别用@ConfigurationProperties和@Value给属性设值及其区别的更多相关文章
- (五)Spring Boot之@RestController注解和ConfigurationProperties配置多个属性
一.@RestController和@Controller的区别 @RestController注解相当于@ResponseBody + @Controller合在一起的作用. 如果只是使用@Rest ...
- spring boot Swagger2(version=2.7.0) 注解@ApiImplicitParam的属性dataType值为”自定义泛型“应用
注解: @ApiImplicitParams @ApiImplicitParam name="需注解的API输入参数", value="接收参数的意义描述" ...
- Spring Boot 设置启动时banner
Spring Boot项目再启动的时候默认会在控制台输出一个字符banner图案,如下图: 我们可以通过下面的方法关闭启动时显示字符banner图案: 关闭banner方法一: public stat ...
- spring boot 设置tomcat post参数限制
今天传图片,用的base64字符串,POST方法,前端传送的时候总是莫名其妙的崩溃,去网上搜了半天,以为是文件大小被限制了,但是我这个是字符串接收,不是文件接收,于是又继续搜,原来post本身没有参数 ...
- spring boot 读取配置文件(application.yml)中的属性值
在spring boot中,简单几步,读取配置文件(application.yml)中各种不同类型的属性值: 1.引入依赖: <!-- 支持 @ConfigurationProperties 注 ...
- Spring Boot 设置静态资源访问
问题描述 当使用spring Boot来架设服务系统时,有时候也需要用到前端页面,当然就不可或缺地需要访问其他一些静态资源,比如图片.css.js等文件.那么如何设置Spring Boot网站可以访问 ...
- Spring boot设置启动监听端口
一.通过配置 修改application.properties 在属性文件中添加server.port=8000 二.直接看代码: @Controller @EnableAutoConfigurati ...
- Spring Boot设置定时任务
在 http://start.spring.io/ 中新建一个Group为com.zifeiy,Artifact为task的工程. 然后在TaskApplication中添加注释:@EnableSch ...
- Spring Boot 2.x(六):优雅的统一返回值
目录 为什么要统一返回值 ReturnVO ReturnCode 使用ReturnVO 使用AOP进行全局异常的处理 云撸猫 公众号 为什么要统一返回值 在我们做后端应用的时候,前后端分离的情况下,我 ...
随机推荐
- kali拿取路由器pin码
前序:拿pin码就可以直接跑出WPA PSK, 下面开始记录我的操作过程. 网卡监控模式 airmon-ng start wlan0 扫描 wash -i wlan0mon 破pin 网卡 物理地址 ...
- 线程同步——用户模式下线程同步——Interlocked实现线程同步
线程同步分为用户模式下的线程同步和内核对象的线程同步. 当然用户模式下的线程同步实现速度比内核模式下快,但是功能也有局 //1.利用原子访问: Interlocked系列函数,关于Interlocke ...
- hdu 1151 Air Raid - 二分匹配
Consider a town where all the streets are one-way and each street leads from one intersection to ano ...
- Git clone、git reset
一,git clone 1,git clone某一个分支 git clone -b <branch> <remote_repo> 2,.git 文件太大 :clone的时候,可 ...
- python第一阶段总结(1)
python3第一阶段的总结 首先申明一下,本人是看网络课程“老男孩”过来写博客的,想把自己学到的东西分享一下.同时给老男孩打个广告,其教学水平真的挺好的.仅据我个人多年的学习评价. 好,接下来是我对 ...
- loj SDOI2017数字表格
目录 太才了 注意,错误 代码 太才了 \(\prod \limits_{i=1}^{n}\prod\limits_{j=1}^{m}f[gcd(i,j)]\) \(\prod\limits_{k=1 ...
- Android 的 ListView 的CheckBox标题栏显示文本之后显示单选框
https://blog.csdn.net/u013790519/article/details/50036223 2.CheckBox的android:button=”@null”属性代码设置如下: ...
- 论文阅读之: Hierarchical Object Detection with Deep Reinforcement Learning
Hierarchical Object Detection with Deep Reinforcement Learning NIPS 2016 WorkShop Paper : https://a ...
- MPI之聚合通信-Scatter,Gather,Allgather
转自:https://blog.csdn.net/sinat_22336563/article/details/70229243 参考:http://mpitutorial.com/tutorials ...
- Java二进制指令
转自: http://www.blogjava.net/DLevin/archive/2011/09/13/358497.html 指令从0x00-0xc9 没有0xba 常量入栈指令 指令码 操作码 ...