目录
1.Spring Boot
2.Spring Boot配置文件
2.1配置文件的作用
2.2配置文件的格式
2.1.1properties配置文件说明
2.2.2yml配置文件说明
2.2.3properties和yml的对比
3.读取Spring Boot配置文件的方法
3.1使用@value读取配置文件(只能读取一个)
?3.2使用@ConfigurationProperties(直接在类上写)
3.3@PropertySource读取指定配置文件
1.Spring Boot
Spring Boot的创建比较简单,这里不加以叙述。
Spring的诞生是为了简化Java程序的开发的
Spring Boot的诞生是为了简化Spring程序的开发的
优点:
? ? ? ? 1)快速集成框架,Spring Boot提供了启动添加依赖的功能,用于秒级集成各种框架
????????2)内置运行容器,无需配置Tomcat等Web容器,直接运行和部署程序
? ? ? ? 3)快速部署项目,无需外部容器即可启动并运行项目
? ? ? ? 4)可以完全抛弃繁琐的XML,使用注解和配置的方式进行开发
? ? ? ? 5)支持更多的监控的指标,可以更好的了解项目的运行情况?
2.Spring Boot配置文件
2.1配置文件的作用
配置文件中配置了项目中最终要的数据,例如:
? ? ? ? 1)数据库的连接信息(用户名密码)
? ? ? ? 2)项目的启动端口
? ? ? ? 3)第三方系统的调用密钥等信息
? ? ? ? 4)用于发现和定位问题的普通日志等
注意:Spring Boot项目没有配置信息,就不能连接和操作数据库,甚至不能保存可用用于排查问题的关键日志,所以配置文件非常重要
2.2配置文件的格式
在Spring Boot中配置文件主要分为两种:
? ? ? ? 1).properties(主要是key=value格式)
? ? ? ? 2).yml(主要是key:value格式)
注意:
? ? ? ? 1)当项目中既有?.properties?和.yml, 且两个配置文件中有相同的配置项,Spring Boot会优先考虑.properties,因为.properties的优先级更高一些
? ? ? ? 2)一个项目中允许存在两种不同的配置,但是在项目中建议只使用一种配置文件的格式
2.1.1properties配置文件说明
properties基本语法:是以key=value这种格式配置的(配置文件的注释使用“#”)
server.port=8080
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/2022-8-27
spring.datasource.username=root
spring.datasource.password=1234
?读取配置文件的内容,可以使用@value注解来实现
@value注解使用“${}”的格式读取
@Component
public class Read implements InitializingBean {
@Value("${server.port}")
private String port;
@Override
public void afterPropertiesSet() throws Exception {
System.out.println();
System.out.println(port);
System.out.println();
}
}
2.2.2yml配置文件说明
yml基本语法:yml是树形结构的配置文件,它的基础语法是key:value,这里的“:”后面跟着一个空格
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/2022-8-27
username: root
password: 1234
# ~代表null
null.value: ~
string:
str1: Hello \n World
str2: 'Hello \n World'
str3: "Hello \n World"
?当str3的字符串加上双引号,会执行\n换行
?读取yml中配置对象就需要用到注解:@ConfigurationProperties
student:
id: 1
name: zhangsan
age: 18
@Component
@ConfigurationProperties("student")
public class User {
private int id;
private String name;
private int age;
// 一堆getter setter
}
读取配制集合
mylist:
colors:
- RED
- GREEN
- BLACK
@Component
@ConfigurationProperties("mylist")
public class MyList {
private List<String> colors;
// 一堆getter 和 setter
}
@Component
public class Read3 implements InitializingBean {
@Autowired
private MyList myList;
@Override
public void afterPropertiesSet() throws Exception {
for (String val : myList.getColors()){
System.out.println(val);
}
}
}
注意: yml的另一种写法
? ? ? ?1) 配置对象:student: {id: 1,name: zhangsan,age: 18}
? ? ? ?2) 配置集合:mylist: {colors: [RED,GREEN,BLACK]}
2.2.3properties和yml的对比
1)properties的语法更复杂,yml语法更简单
2)yml通用性更好,支持更多的语言
3)yml支持更多的数据类型
4)yml格式的配置文件写的时候容易出错(在key:value中间有个空格),而properties写法比较传统,但不易出错?
3.读取Spring Boot配置文件的方法
3.1使用@value读取配置文件(只能读取一个)
@Component
public class Read implements InitializingBean {
@Value("${server.port}")
private String port;
@Override
public void afterPropertiesSet() throws Exception {
System.out.println();
System.out.println(port);
System.out.println();
}
}
?3.2使用@ConfigurationProperties(直接在类上写)
@Component
@ConfigurationProperties("mylist")
public class MyList {
private List<String> colors;
public List<String> getColors() {
return colors;
}
public void setColors(List<String> colors) {
this.colors = colors;
}
}
3.3@PropertySource读取指定配置文件
jdbc.username=root2
jdbc.password=root1
@Component
@PropertySource(value = {"classpath:application.properties"})
public class JDBC implements InitializingBean {
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Override
public void afterPropertiesSet() throws Exception {
System.out.println(username + " " + password);
}
}
|