springboot默认加载配置
SpringBoot使用两种全局的配置文件,全局配置文件可以对一些默认配置进行修改 。
- Application.properties
- application.yml
配置文件放在src/main/resources目录或者类路径/config下,这个配置文件的路径是有优先级的,至于优先级后面再说 。
首先这两个文件中properties这个文件不需要多说使我们经常使用的资源文件,可是这个Yml是什么呢?后面再说
配置信息
SpringBoot不需要添加复杂的web.xml或者spring.xml等配置文件,spring只有一个配置文件,也非必须的 。
默认的配置文件是application.properties 。
#修改端口号server.port=8888#定义项目的访问目录server.context-path=/springboot我们使用IDEA需要注意,图就不截图太麻烦了:
如果properties文件中出现乱码,找到setting中,在file encoding中勾选Transparent native-to-asci conversion 。
YAML文件
除了默认的properties文件,SpringBoot还提供另外一种配置文件yml,这种文件提供一种更加简洁的方式编写配置信息 。
yml是YAML(YAML Ain‘t Markup Language)语言的文件,是一种标记语言,以数据为中心,比json、xml等更适合做配置文件,有想法的可以去网上搜搜资料学习下 。
参考语法规范:
官方参考: http://www.yaml.org
yml学习参考:https://www.yiibai.com/yaml/yaml_syntax_primitives.html
YAML基本语法:
- 以键值对的方式表示属性 。(空格必须有) 。
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格 。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 。
- 属性和值是大小写敏感的 。
server: port: 8081 servlet: context-path: springboot注意:【:后必须跟一个空格】,两种方式推荐使用yml方式配置项目 。
YAML语法
YAML支持的三种数据结构 。
- 字面量:普通的值 。(数字,字符串,布尔)
- 对象:键值对的集合 。(Map)
- 数组:一组按次序排列的值 。(List,Set)
YAML中字面量属于普通的值 。以key: value来表示,value前必须带一个空格 。
字面量,字符串默认不需要单双引号 。
双引号:会转义字符,特殊字符会被转义 。(name: "SimpleWu lisi" //输出:SimpleWu换行 lisi)
单引号:不会转义字符,特殊字符不会被转义 。(name: 'SimpleWu lisi' //输出:SimpleWu lisi)
server: port: 8081对象、Map
在YAML中,对象和Map都是以键值对的方式表示 。在下一行来编写属性和值得关系,注意缩进 。
users: firstName: SimpleWu email: lovelyWu98k@gmail.com对象还有另一种写法,看到这种写法是不是想到了JSON?
users: { firstName: zhangsan, email: lovelyWu98k@gmail.com}数组
用-值得方式来表示数组中的一个元素 。
users: - SimpleWu - lovelyWu98k@gmail.com - addressisnot另外一种写法,还是像JSON
users: [SimpleWu,lovelyWu98k@gmail.com,addressisnot]
将配置映射到实体类
【超全、超详的Spring Boot配置讲解笔记】springboot支持我们直接将properties或者yml中的属性映射到某个实体类,看例子 。
MySQL: url: jdbc:mysql:///springboot port: 3306 user: root pass: root假如在资源中我们现在有个mysql的链接信息,我们如何将它映射到实体类中去呢?
有两种方式:
- @ConfigurationProperties指定从配置文件中读取属性,prefix指定对应yaml文件中的名称 。
- @Value获取配置的属性值
@ConfigurationProperties
使用IDEA当我们添加了@ConfigurationProperties注解后,在页面上回出现一个错误提示,我们需要加入依赖 。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional></dependency>编写JAVA类MySQLInfo.java
//java类@ConfigurationProperties(prefix = "mysql")@Componentpublic class MySQLInfo { private String url; private Integer port; private String user; private String pass; //省略getset}我们只需要指定prefix即可,他就会加载我们yml配置前置为mysql的属性 。
@Value
如果我们使用这个注解来获取属性使用方式是:
//java类@Componentpublic class MySQLInfo { @Value("${mysql.url}") private String url; @Value("${mysql.port}") private Integer port; @Value("${mysql.user}") private String user; @Value("${mysql.pass}") private String pass; //省略getset}
推荐阅读
- 网络密钥交换与公钥分发的方法
- 能够以假乱真、媲美实时光线追踪的AMD显卡新技术—动态全局光照
- 以日环食为令:OPPO、vivo在行动,小米、荣耀在行动
- 紫甘蓝、蓝莓、黑莓…它们的作用你知道吗?
- 干锅酱、煲仔酱、广式烧汁、鲍汁、各种万能酱汁配方,超实用
- 保证手机流畅稳定运行的使用小技巧、适用于所有手机
- 小米手环 7 爆料:更大的屏幕,支持息屏显示、GPS、智能闹钟等
- PHP实现站内信
- 安全漏洞XSS、CSRF、SQL注入以及DDOS攻击
- 分布式、高并发、多线程,这些概念还傻傻分不清吗?