@ConfigurationProperties注解和@Value注解的区别
都是读取配置文件属性
1. @ConfigurationProperties(prefix = "person")读取多个属性
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
String LastName;
int age;
boolean boss;
Date birth;
Map<String, String> maps;
List<String> list;
Dog dog;
prefix = "person" 读取前缀为person的属性的值.
yaml文件对应的属性值:
person:
LastName: 飞
age: 12
boss: true
birth: 2019/6/15
maps: {key1:value1,key2:value2}
list: [1,2,3,4,5]
dog:
name: 旺财
age: ${random.int[20]}
1. @value读取单个属性
@Component
public class Person1 {
@Value("${person.last-name}")
String LastName;
//@Value("${person.age}")
@Value("#{12*2}")
int age;
@Value("${person.boss}")
boolean boss;
@Value("${person.birth}")
Date birth; Map<String, String> maps;
@Value("${person.list}")
List<String> list; Dog dog;
注意事项:maps 和dog 不能使用@value注解,@Value不支持复杂类型
application.properties文件配置
person.last-name=飞
person.age=12
person.boss=true
person.birth=2019/6/15
person.maps.key1=value1
person.maps.key2=value2
person.list=dog,cat
person.dog.name=${person.last-name}_你好
person.dog.age=${random.int(14)}
两者获取值的比较(都能从properties和yaml获值)
| @ConfigurationProperties | @value | |
| 功能 | 批量注入配置文件的属性 | 一个个指定 |
| 松散绑定(松散语法) | 支持 | 不支持 |
| SPEL | 不支持 | 支持(计算,如上age的值所示) |
| JSR303数据校验 | 支持 (邮箱验证) | 不支持 |
| 复杂类型封装 | 支持 | 不支持 |
显然,前者支持松绑定的特性更强大,所以在实际开发中建议使用@ConfigurationProperties来读取自定义属性。
@ConfigurationProperties注解和@Value注解的区别的更多相关文章
- Spring中@Autowired注解、@Resource注解的区别 (zz)
Spring中@Autowired注解.@Resource注解的区别 Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@ ...
- SpringBoot 中常用注解@Controller/@RestController/@RequestMapping的区别
SpringBoot中常用注解@Controller/@RestController/@RequestMapping的区别 @Controller 处理http请求 @Controller //@Re ...
- 【lombok】lombok---帮你简化生成必要但臃肿的java代码工具 【映射注解和lombok注解同时使用 以及 映射注解放在属性和get方法上的区别】
官方地址:https://projectlombok.org/ GitHub:https://github.com/rzwitserloot/lombok 指导说明文档:http://jnb.ociw ...
- [转帖]java注解与注释注解区别
https://baijiahao.baidu.com/s?id=1615942718081024481&wfr=spider&for=pc 还需要仔细看一下书的 书里面都有. jav ...
- Springboot注解--@Controller和@RestController的区别
1.使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面:若返回json等内容到页面,则需要加@ResponseBody注解 2 ...
- JavaEE开发之Spring中的条件注解组合注解与元注解
上篇博客我们详细的聊了<JavaEE开发之Spring中的多线程编程以及任务定时器详解>,本篇博客我们就来聊聊条件注解@Conditional以及组合条件.条件注解说简单点就是根据特定的条 ...
- JavaEE开发之Spring中的条件注解、组合注解与元注解
上篇博客我们详细的聊了<JavaEE开发之Spring中的多线程编程以及任务定时器详解>,本篇博客我们就来聊聊条件注解@Conditional以及组合条件.条件注解说简单点就是根据特定的条 ...
- Spring 注解编程之注解属性别名与覆盖
前两篇文章咱聊了深入了解了 Spring 注解编程一些原理,这篇文章我们关注注解属性方法,聊聊 Spring 为注解的带来的功能,属性别名与覆盖. 注解属性方法 在进入了解 Spring 注解属性功能 ...
- 【Java8新特性】重复注解与类型注解,你真的学会了吗?
写在前面 在Java8之前,在某个类或者方法,字段或者参数上标注注解时,同一个注解只能标注一次.但是在Java8中,新增了重复注解和类型注解,也就是说,从Java8开始,支持在某个类或者方法,字段或者 ...
- Springboot--元注解及自定义注解(表单验证)
本文简单说明一下元注解,然后对元注解中的@Retention做深入的讨论,在文章最后使用元注解写一个自定义注解来结尾. 一.结论: @Target:注解的作用目标 @Target(ElementTyp ...
随机推荐
- Python | Pipenv官方推荐的python包管理工具
原文地址:https://cloud.tencent.com/developer/article/1355672 Pipenv - 官方推荐的的python包管理工具. Pipenv是一款旨在将所有包 ...
- Oracle系列十二 约束
约束是表级的强制规定有以下五种约束: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK 注意事项 如果不指定约束名 ,Oracle server 自动按照 S ...
- TypeScript 菜鸟教程
非常好的Js教程,web api,canvas API教程 https://wangdoc.com/ 语法基础 https://www.runoob.com/typescript/ts-install ...
- tomcat常见报错解决方法汇总
报错一:内存泄漏,字眼This is very likely to create a memory leak. 解决方法:修改tomcat内存. 在tomcat/bin目录下,修改catalina.s ...
- [LeetCode] 317. Shortest Distance from All Buildings 建筑物的最短距离
You want to build a house on an empty land which reaches all buildings in the shortest amount of dis ...
- 高级UI-自定义控件
自定义控件在Android开发中有着大量的运用,为了做出符合项目的效果很多时候需要自定义控件,这里就使用两个自定义控件,来说明自定义控件的使用流程 仿QQ侧滑 之前使用DrawerLayout和Nav ...
- Docker的基础教程(基于CentOS)
1.查看版本 Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . 通过 uname -r 命令查看你当前的内核 ...
- 不同编程语言实现输出“HelloWorld!”
对于大多数程序语言,第一个入门编程代码便是"Hello World!",下面分别使用不同的语言输出"Hello World!":1. java语言 public ...
- proc 目录介绍
/proc/apm 高级电源管理(APM)版本信息及电池相关状态信息,通常由apm命令使用: /proc/buddyinfo 用于诊断内存碎片问题的相关信息文件: /proc/cmdline 在 ...
- InnoDB的MVCC实现原理
InnoDB的MVCC,是通过在每行记录后面保存两个隐藏的列来实现的. 这两个列,一个保存了行的创建时间,一个保存了行的过期时间(删除时间).当然存储的并不是实际时间,而是系统版本号(sytem ve ...