@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给属性设值及其区别的更多相关文章

  1. (五)Spring Boot之@RestController注解和ConfigurationProperties配置多个属性

    一.@RestController和@Controller的区别 @RestController注解相当于@ResponseBody + @Controller合在一起的作用. 如果只是使用@Rest ...

  2. spring boot Swagger2(version=2.7.0) 注解@ApiImplicitParam的属性dataType值为”自定义泛型“应用

    注解: @ApiImplicitParams @ApiImplicitParam    name="需注解的API输入参数", value="接收参数的意义描述" ...

  3. Spring Boot 设置启动时banner

    Spring Boot项目再启动的时候默认会在控制台输出一个字符banner图案,如下图: 我们可以通过下面的方法关闭启动时显示字符banner图案: 关闭banner方法一: public stat ...

  4. spring boot 设置tomcat post参数限制

    今天传图片,用的base64字符串,POST方法,前端传送的时候总是莫名其妙的崩溃,去网上搜了半天,以为是文件大小被限制了,但是我这个是字符串接收,不是文件接收,于是又继续搜,原来post本身没有参数 ...

  5. spring boot 读取配置文件(application.yml)中的属性值

    在spring boot中,简单几步,读取配置文件(application.yml)中各种不同类型的属性值: 1.引入依赖: <!-- 支持 @ConfigurationProperties 注 ...

  6. Spring Boot 设置静态资源访问

    问题描述 当使用spring Boot来架设服务系统时,有时候也需要用到前端页面,当然就不可或缺地需要访问其他一些静态资源,比如图片.css.js等文件.那么如何设置Spring Boot网站可以访问 ...

  7. Spring boot设置启动监听端口

    一.通过配置 修改application.properties 在属性文件中添加server.port=8000 二.直接看代码: @Controller @EnableAutoConfigurati ...

  8. Spring Boot设置定时任务

    在 http://start.spring.io/ 中新建一个Group为com.zifeiy,Artifact为task的工程. 然后在TaskApplication中添加注释:@EnableSch ...

  9. Spring Boot 2.x(六):优雅的统一返回值

    目录 为什么要统一返回值 ReturnVO ReturnCode 使用ReturnVO 使用AOP进行全局异常的处理 云撸猫 公众号 为什么要统一返回值 在我们做后端应用的时候,前后端分离的情况下,我 ...

随机推荐

  1. LVS+Keepalived+Mysql+主主数据库架构[2台]

    架构图 安装步骤省略. 158.140 keepalived.conf ! Configuration File for keepalived global_defs { #全局标识模块 notifi ...

  2. 20145319 《计算机病毒》动态分析lab3-2

    20145319 <计算机病毒>动态分析lab3-2(实践六) 实践过程 基础分析 拿到恶意代码时,首先使用PE ID打开,查看其中一些基础信息以及观察该恶意代码是否加壳,来确定下一步分析 ...

  3. 单片机中printf函数的重映射

    单片机中printf函数的重映射 一.源自于:大侠有话说 1.如果你在学习单片机之前学过C语言,那么一定知道printf这个函数.它最最好用的功能 除了打印你想要的字符到屏幕上外,还能把数字进行格式化 ...

  4. deepin云打印实现连接Windows打印机

    问题的产生:今天给台式机安装deepin系统时,突发奇想能不能给其安装上打印机驱动,让其实现打印功能. 问题的解决方法: 1.在连接打印机的电脑上安装deepin云打印服务端软件,下载地址:https ...

  5. 获取当前的日期时间 格式“yyyy-MM-dd HH:MM:SS”

    function getNowFormatDate() {     var date = new Date();     var seperator1 = "-";     var ...

  6. 终于知道linux firefox不能播放 web在线词典的单词发音了! --通过banshee安装gstreamer1-libav/-plugins-ugly/plugins-bad三个mp3插件.

    mpg123 是一个 命令行的播放器, 他没有gui界面. 直接用 mpg123 test.mp3 就可以直接播放, 而且, 最终要的是, mpg123 自带了mp3的解码器. mpeg: movin ...

  7. HDU 4366 Successor(dfs序 + 分块)题解

    题意:每个人都有一个上司,每个人都有能力值和忠诚值,0是老板,现在给出m个询问,每次询问给出一个x,要求你找到x的所有直系和非直系下属中能力比他高的最忠诚的人是谁 思路:因为树上查询很麻烦,所以我们直 ...

  8. SQL优化参考

    1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  9. CF1137C Museums Tour

    思路 强连通分量的好题 对于每个博物馆,因为时间的限制条件,不好直接统计, 发现d很小,可以建出d层分层图,原图<u,v>的边变成<u,i>到<v,i+1>的边,& ...

  10. Latex: 添加IEEE论文keywords

    参考: How to use \IEEEkeywords Latex: 添加IEEE论文keywords 方法: \begin{IEEEkeywords} keyword1, keyword2. \e ...