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进行全局异常的处理 云撸猫 公众号 为什么要统一返回值 在我们做后端应用的时候,前后端分离的情况下,我 ...
随机推荐
- linux 文件同步
ref: https://www.cnblogs.com/MacoLee/p/5633650.html https://wenda.so.com/q/1505308236213470 http://b ...
- shell &&,||,()
做个笔记. 1. linux命令返回值介绍 shell 在执行某个命令时,会有一个返回值,该值保存在shell变量$?中.当$?为0时,表示命令执行成功:当$?为1时,表示命令执行失败. 2. &am ...
- 2018-2019-1 20189206 《Linux内核原理与分析》第三周作业
linux内核分析学习笔记 --第二章 操作系统是如何工作的 计算机的"三大法宝" 程序存储计算机 即冯诺依曼体系结构,基本上是所有计算机的基础性的逻辑框架 函数调用堆栈 高级语言 ...
- Java Spring+Mysql+Mybatis 实现用户登录注册功能
前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...
- 对html标签 元素 以及css伪类和伪元素的理解
标签:这应该都知道.<br/> .<a>.<p></p> 等都是标签. 元素:标签开始到结束.比如:<p>p之间的内容</p> ...
- topcoder srm 683 div1
problem1 link 肯定存在相邻两堆满足不会存在任何操作在这两堆之间进行.然后就成为一条链,那么只需要维护链的前缀和即可判断当前堆和前一堆之间需要多少次操作. problem2 link 对于 ...
- topcoder srm 687 div1
1.$A_{1}=2,A_{2}=3,A_{n}=A_{n-2}+A_{n-1}-1$.给出数字$n$,将其表示成若干个$A$中的不同元素的和. 思路:设$B_{n}=A_{n}-1$,那么有$B_{ ...
- Python3基础 list extend 合并列表
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- vue学习【第七篇】:Vue之导入Bootstrap
Vue引入bootstrap主要有两种方法 方法一:在main.js中引入 此方法导入的bootstrap中对于html,body的一些预设置的css样式可能无效 引入jQuery 在当前项目的目录下 ...
- tp框架中的一些疑点知识-7
mysqli是用面向对象的,所以用箭头对象语法, 而mysql是用C语言面向过程写的, 所以用的都是php全局函数 式的写法. tinkle: 叮叮当当的响; (口语)一次电话, i will giv ...