文章目录
- Spring Boot核心配置与配置文件属性值注入
- 目标
- 全局文件配置
- application.properties与application.yml文件配置
- 使用@ConfigurationProperties注入属性
- 使用@PropertySource加载自定义配置文件
- 使用@ImportResource加载XML配置文件
- 使用@Configuration编写自定义配置类
- Profile多环境配置
- 随机值的配置
- 配置文件参数间引用
Spring Boot核心配置与配置文件属性值注入
目标
- 熟悉Spring Boot全局配置文件的使用以及自定义配置
- 掌握Spring Boot配置文件属性值注入
- 掌握Profile多环境配置
- 了解随机值设置以及参数间引用
全局文件配置
- application.yml(yaml)
- application.properties
查看
spring-boot-starter-parent
依赖的源码可知,Spring Boot默认以application
为文件名,yml
、yaml
、properties
为后缀名的文件作为配置文件,默认加载顺序如图所示(配置会以顺序的先后加载被覆盖)。
application.properties与application.yml文件配置
- application.properties的配置
server.address=80
server.port=8848
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#自定义属性的配置
person.age=22
person.remarks=每天进步一点点
person.hobby=[play,read,sleep]
- application.yml的配置
- YAML文件格式是Spring Boot支持的一种JSON超集文件格式。
- 相较于传统的Properties配置文件,YAML文件以数据为核心,是一种更为直观且容易被电脑识别的数据序列化格式。
- application.yaml的工作原理和application.properties一样。
- 配置实例:
server:
port:8848
path:/hello
# 自定义属性的配置
person:
age:22
hobby:
-play
-read
-sleep
# hobby:[play,read,sleep]
remarks:
每天进步一点点
#值为Map集合或对象
map:
k1:v1
k2:v2
# map:{k1:v1,k2:v2}
使用@ConfigurationProperties注入属性
相关注解:
@Component
@ConfigurationProperties(prefix = "xxx")
@Value
prefix
为配置属性的前缀
@Component
@Data
@ConfigurationProperties(prefix = "person")
public class Person {
Long id;
int age;
String name;
@Value("${person.remarks}")
String remarks;
}
person:
age: 100
remarks: 我是从yml文件中读取的
name: 张小明
id: 1000000
使用@PropertySource加载自定义配置文件
@PropertySource:指定自定义配置文件的位置和名称
@Data
@Component
@PropertySource("classpath:student.properties")
@ConfigurationProperties(prefix = "student")
public class Student {
Long id;
String school;
}
student.id=8848
student.school=电子科技大学
目录结构如下:
使用@ImportResource加载XML配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="student" class="com.zsc.core_config.domain.Student">
<property name="id" value="10086"/>
<property name="school" value="北京大学"/>
</bean>
</beans>
@SpringBootApplication
@ImportResource("classpath:student.xml")
public class CoreConfigApplication {
public static void main(String[] args) {
SpringApplication.run(CoreConfigApplication.class, args);
}
}
此时需要关闭实体类的部分注解
@Data
//@Component
//@PropertySource("classpath:student.properties")
//@ConfigurationProperties(prefix = "student")
public class Student {
Long id;
String school;
}
使用@Configuration编写自定义配置类
@Configuration
public class MyConfig {
@Bean
public Student student2() {
Student student = new Student();
student.setId(10086L);
student.setSchool("华中科技大学");
return student;
}
}
生成的Bean对象id为方法名,此代码生成的Bean对象id为
student2
Profile多环境配置
@Profile:作用于类,通过value属性指定环境配置
等同于Profile文件名称中profile的值。
随机值的配置
语法格式${random.xx}
my.secret=${random.value}
my.number=${random.int}
my.bignumber=${random.long}
my.uuid=${random.uuid}
my.number.less.than.ten=${random.int(10)}
my.number.ranges=${random.int[10,100]}
配置文件参数间引用
语法格式${xx}
app.name=MyApp
app.description=${app.name} is a Spring Boot application