1. 首先我们来看每一个的具体使用

1. ConfigurationProperties

1. application.yml文件中:

person:
lastName: xj
age: 18
boss: true
birth: 2017/12/12
maps: {k1: v1,k2: v2}
lists:
- lisi
- zhaoliu
- wangwu

2. Person类中:

@Component
@ConfigurationProperties(prefix = "person")
public class Person { private String lastName;
private int age;
private boolean boss;
private Date birth;
private Map maps;
private List lists;
getset方法。。。
toString方法。。。

3. 此时在测试文件中自动注入Person对象,然后打印输出

@SpringBootTest
class Boot02ConfigApplicationTests {
@Autowired
Person person;
@Test
void contextLoads() {
System.out.println(person);
}
}

4. 可以看到输出结果

Person{lastName='xj', age=18, boss=true, birth=Tue Dec 12 00:00:00 CST 2017, maps={k1=v1, k2=v2}, lists=[lisi, zhaoliu, wangwu]}

2. Value

1. application.properties文件中:

和之前一样

2. Person类中:

@Component
public class Person {
@Value("${person.lastName}")
private String lastName;
@Value("#{11*2}")
private int age;
private boolean boss;
private Date birth;
private Map maps;
private List lists;
getset方法。。。
toString方法。。。

3. 再次测试可知

Person{lastName='zhangxiaojian', age=22, boss=false, birth=null, maps=null, lists=null}

2. @Value获取值和@ConfigurationProperties获取值比较

@ConfigurationProperties @Value
功能 批量注入配置文件中的属性 一个个指定
松散绑定(松散语法)lastName=last_name=last-name 支持 不支持
SpEL 不支持 支持
JSR303数据校验 支持 不支持
复杂类型封装 支持 不支持

注意:两种同时存在:@ConfigurationProperties等级更高

1. JSR303数据校验:

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
@Email
private String lastName;
private Integer age;

3. 二者何时使用

  • 如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,此时使用@Value

    例如:
@RestController
public class HelloController { @Value("${person.last-name}")
private String name ; @RequestMapping("/sayHe11o")
public String sayHello(){
return "Hello " +name ;
}
}
  • 如果说,我们专门编写了一个javaBean来和配置文件进行映射, 我们就直接使用@ConfigurationProperties

    @ConfigurationProperties :如果说,我们专门编写了一个javaBean来和配置文件进行映射, 我们就直接使用

@ConfigurationProperties与@Value的区别的更多相关文章

  1. 获取配置文件yml的@ConfigurationProperties和@Value的区别

    首先,配置文件的事,我没讲properties,这个写中文的时候,会有乱码,需要去Idea里面设置一下编码格式为UTF-8 还有,我们的类和配置文件直接关联,我用的是ConfigurationProp ...

  2. @ConfigurationProperties和@Value的区别

    @ConfigurationProperties @Value 功能: 批量注入配置文件中的属性 一个个指定,多个属性多个@Value 松散绑定: 支持 不支持 SpEL: 不支持    支持 JSR ...

  3. SpringBoot配置中@ConfigurationProperties和@Value的区别

    基本特征 @ConfigurationProperties 与@Bean结合为属性赋值 与@PropertySource(只能用于properties文件)结合读取指定文件 与@Validation结 ...

  4. Spring Boot 2.0 教程 - 配置详解

    Spring Boot 可以通过properties文件,YAML文件,环境变量和命令行参数进行配置.属性值可以通过,@Value注解,Environment或者ConfigurationProper ...

  5. Springboot 系列(二)Spring Boot 配置文件

    注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 不管是通过官方提供的方式获取 Spring ...

  6. SpringBoot之配置

    回顾 SpringBoot之基础 配置文件 ① 两种全局配置文件(文件名是固定的) 配置文件放在src/main/resources目录或者类路径/config下 application.proper ...

  7. Spring Boot笔记二:快速创建以及yml文件自动注入

    上个笔记写了如何自己去创建Spring boot,以及如何去打jar包,其实,还是有些麻烦的,我们还自己新建了几个文件夹不是. Idea可以让我们快速的去创建Spring boot应用,来看 一.快速 ...

  8. Springboot读取properties配置文件数据

    一.使用@ConfigurationProperties来读取 1.Coffer entity @Configuration @ConfigurationProperties(prefix = &qu ...

  9. springboot pom问题及注解

    springboot pom不需要指定版本号 springboot会自己管理版本号 <!-- 支持热部署 --> <dependency> <groupId>org ...

随机推荐

  1. Flink API

    一.Flink API 1.DataSet:对静态数据进行批处理操作.将静态数据抽象成分布式数据集,使用Flink各种操作符处理数据,支持 Java .Scala.Python 2.DataStrea ...

  2. docker搭建mysql集群

    目录 一.集群方案 二.安装PXC集群 三.Haproxy负载均衡 四.访问测试 五.节点宕机或重启 六.参考 一.集群方案 1.Replication 速度快,但仅能保证弱一致性,适用于保存价值不高 ...

  3. RabbitMQ(一):入门

    前言 最近学习了尚硅谷-RabbitMQ 受益匪浅,根据自己的理解做了下笔记,不正确的地方欢迎指正 正文 RabbitMQ是一个消息中间件,相当于一个中转站:用于接收.存储.转发消息数据 Rabbit ...

  4. ES6——类表达式

    //类表达式 const Person1 = class{ constructor(){ console.log('aa') } } //也可以跟上类名P,但是变量P在class外部是访问不到的,在c ...

  5. 在C++中使用openmp进行多线程编程

    在C++中使用openmp进行多线程编程 一.前言 多线程在实际的编程中的重要性不言而喻.对于C++而言,当我们需要使用多线程时,可以使用boost::thread库或者自从C++ 11开始支持的st ...

  6. 挂载redhat镜像创建本地yum源

    上传镜像文件到/mnt文件夹下,或者上传到其他文件夹下 挂载镜像路径/mnt/cdrom 在mnt文件夹下创建cdrom文件夹 创建命令:mkdir  cdrom 挂载镜像命令:mount rhel- ...

  7. Tomcat集群Cluster实现原理

    1.Tomcat集群         Tomcat集群的问题之一是如何处理Session,Session是有状态的,请求到了Tomcat,后续流传是要根据上下文(Context)来进行的.我们可以改造 ...

  8. SSL基础知识及Nginx/Tomcat配置SSL

    HTTPS 是在 HTTPS 基础之上添加 SSL/TLS 使网络通讯加密,进而确保通信安全.可简记为 HTTPS = HTTP + SSL/TLS 本文档主要讲解常规SSL格式.Nginx 与 To ...

  9. GoLang设计模式04 - 单例模式

    单例模式恐怕是最为人熟知的一种设计模式了.它同样也是创建型模式的一种.当某个struct只允许有一个实例的时候,我们会用到这种设计模式.这个struct的唯一的实例被称为单例对象.下面是需要创建单例对 ...

  10. Nginx:常用基本命令与异常处理

    Nginx日志 - ./nginx-1.6.0-ems/logs/nginx.pid Nginx启动时应该使用cmd等命令行工具启动,双击启动同样会产生进程但会造成异常,判断条件是 ./nginx-1 ...