SpringBoot配置文件解析
基于2018版本IDEA使用Spring Initializer快速创建Spring Boot项目
SpringBoot项目文件解析:
src/main/java–保存java源代码
src/main/resources/application.properties–Spring Boot核心应用配置文件
static–保存web应用程序所需的静态资源hrml、css、js、img
templates–保存模板页面
2018版本后的src/main/resources目录下的static、templates文件需要手动创建。
Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面,可以使用模板引擎freemarker、thymeleaf。
依赖@SpringBootApplication注解中包含的@EnableAutoConfiguration,SpringBoot项目会创建出自动的默认配置数据,以保证SpringBoot项目在创建成功以后,没有进行任何编程操作的情况下就可以正常运行起来。
在不同环境下SpringBoot项目所使用的自动配置的默认数据值就需要随着环境的变化而被修改,我们在修改的时候不能修改源码,而且源码无法修改,基于这个情况SpringBoot项目对外提供了一个可以用来修改自动配置的默认数据值的文件:application.properties文件。
application.properties文件SpringBoot的核心配置文件,作用:修改自动配置的默认数据值的文件
名称:application.properties或application.yml
application.properties或application.yml就是同一个配置文件,后缀名的不同,表示这个文件中内容的书写风格不同。
application.properties书写格式是一行显示:
user.userid=101
user.username=张氏
user.usersex=true
application.yml书写格式是分行显示:
user:
userid: 111
username: 小李同学
usersex: false
YAML文件解析
YAML(Yet Another Markup Language)一种基于Unicode容易阅读,容易和脚本语言交互。是一个标记语言又不是一个标记语言,因为它以数据为中心。
YAML语法格式:
基本语法 :键:(空格)值:表示一对键值对(空格必须有),以空格的缩进来控制层级关系,只要是左对齐的一列数据,都是同一个层级的。
例如:
user:
userid: 111
username: 小李同学
usersex: false
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test
属性值写法属性值–键值对的键所对应的值,由于yml文件的属性,实际都是xxxproperties类的成员变量,成员变量都是有固定的数据类型,所以属性的值不能随便写,必须符合成员变量对应的数据类型。
普通值 (数字字、符串、布尔)
数字–数字值
1布尔–true/false
字符串–默认不用加单引号或双引号,如果有双引号–字符串中的转义字符会执行\n—换行,单引号–字符串中的转义字符不会执行,会作为一个字符直接使用。
对象对象名称–对象中的属性换行缩进表示或者一行显示
student:
stuid: 1001
stuname: zhangsan
stuage: 23
一行显示:student:{objid: 1,objname: hello,objheight: 178.9}
集合数组类型的集合(List、Set)- 空格数组集合中的元素值
javas:
- javase
- javaee
- javame
javas–数组名称
javase、javaee、javame–数组集合中的数据值
数组名称:[数据值1,数据值2
行内写法:names: [zhangsan,lisi,wangwu]
Map(键值对)Map集合的名称:{key1:value1,key2:value2} 例如:maps: {name: zhangsan,age: 23,address: 西安}
使用application.yml通过@ConfigurationProperties将核心配置文件中的数据值与JavaBean类中的成员变量绑定
@ConfigurationProperties有一个属性prefix,prefix = “yml文件中对象名称”
导入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
创建javabean 类名上添加@Component@ConfigurationProperties(prefix = “user”):
package qing.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
@Component
@ConfigurationProperties(prefix = "user")
public class UserBean {
private int userid;
private String username;
private boolean usersex;
private List<String> lists;
private Map<String,Object> maps;
private MyObj myObj