Spring Boot配置与配置文件属性值注入
程序员文章站
2022-06-25 23:11:40
...
文章目录
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
推荐阅读
-
Spring boot工具类静态属性注入及多环境配置详解
-
spring boot静态变量注入配置文件详解
-
Spring Boot与前端配合与Idea配置部署操作过程
-
荐 Spring-boot-study02-spring.xml配置文件注入组件和@Bean注解注入组件差别
-
Spring Boot自动配置原理与实践(一)
-
Spring Boot获取配置文件值
-
spring boot启动文件 或 自定义 配置文件 值获取
-
spring boot启动文件 或 自定义 配置文件 值获取
-
Spring Boot自动配置与Spring 条件化配置
-
Java开发Spring Boot开发环境的安装与配置图文步骤