文章目录
- 2.1Spring Boot的全局配置文件
- application.properties
- application.yaml
- 2.2 配置文件属性值的注入
- 使用@ConfigurationProperties注入属性
- 使用@Value注入属性
- 两种注解的对比分析
- 2.3 Spring Boot自定义配置
- 使用@PropertySource加载配置文件
- 使用@ImportResource加载XML配置文件
- 使用@Configuration编写自定义配置类
- 2.4 Profile多环境配置
- Profile多环境配置
- 使用Profile文件进行多环境配置
- 使用@Profile注解进行多环境配置
- 2.5随机值设置以及参数间引用
- 随机值设置
- 随机值设置以及参数间引用
- 参数间引用
2.1Spring Boot的全局配置文件
application.properties
#普通属性值的配置
server.port=8081
server.servlet.context-path=/chapter02
#对象类型
person.id=1
person.name=zhangsan
person.hobby=play,read,sleep
person.family=father,mother
person.map.k1=v1
person.map.k2=v2
person.pet.type=dog
person.pet.name=kity
application.yaml
概念:
- YAML文件格式是Spring Boot支持的一种JSON超集文件格式。
- 相较于传统的Propertiesi配置文件,YAML文件以数据为核心,是一种更为直观且容易被电脑识别的数据序列化格式。
- application.yaml文件的工作原理和application.properties 一样。
- 语法格式
key:(空格)value - 示例代码:
server:
port: 8081
path: /hello
#当value值为普通数据类型的配置
server:
port: 8082
servlet:
context-path: /hello
#当value值为数组或者单列集合
hobby:
-play
read
-sleep
方式2
hobby: [play,read,sleep]
#当value值为map的时候
map:
k1: v1
k2: v2
#方式2
map: {k1: 1,k2: 2}
#对实体类对象person进行属性配置
person:
id: 2
name: lisi
hobby: [sing,read,sleep]
family: [father,mother]
map: (k1:v1,k2:v2}
pet: {type:cat,name:tom}
2.2 配置文件属性值的注入
使用@ConfigurationProperties注入属性
- 相关注解:
@Component
@ConfigurationProperties(prefix = “xxx”) - 示例代码
@Component @ConfigurationProperties(prefix ="person") public class Person{ private int id; public void setId(int id){ this.id = id;}}
- 注意:使用@ConfigurationProperties注解批量注入属性值时,要保证配置文件中的属性与对应实体类的属性一致,否则无法正确获取并注入属性值。
使用@Value注入属性
- 示例代码
@Component
public class Person{
@Value("S(person.id}")
private int id;}
使用@Value注解对每一个属性注入设置,免去了属性setXX()方法
两种注解的对比分析
- 松散绑定语法
#标准写法 person.firstName=wangwu #使用横线-来对单词进行分隔 person.first-name=wangwu #使用下划线分隔 person.first_name=wangwu #常量 PERSON.FIRST_NAME=wangwu
- JSP303数据校验
@Validated
public class User
//以邮箱形式校验
@Email
private String email;
- SpEl
注入驱动、连接地址、用户名、密码,一些数据库的相关信息
2.3 Spring Boot自定义配置
使用@PropertySource加载配置文件
- 相关注解
@PropertySource:指定自定义配置文件的位置和名称
@Configuration:自定义配置类,Spring容器组件 - 案例演示
1、创建Spring Boot项白,添加Web依赖。
2、在项目的类路径下新建一个test.properties自定义配置文件,在该配
置文件中编写需要设置的配置属性。
#对实体类对象MyProperties进行属性配置
test.id=110
test.name=test
3、在com.itheima.domain包下新创建一个配置类MyProperties,提供test.properties自定义配置文件中对应的属性,并根据@PropertySource注解的使用进行相关配置。
- @Configuration注解用于表示当前类是一个自定义配置类,该类会作为Bean组件添加到Spring容器中,这里等同于@Component注解。
- @PropertySource(“classpath:test.properties”)注解指定了自定义配置文件的位置和名称,此示例表示自定义配置文件为classpath类路径下的test.properties文件。
- @ConfigurationProperties(prefix=“test”)注解将上述自定义配置文件test.properties中以test开头的属性值注入该配置类属性中。
- @EnableConfigurationProperties(MyProperties.class)注解表示开启对应配置类MyProperties的属性注入功能,该注解是配合@ConfigurationProperties使用的。如果自定义配置类使用了@Component注解而非@Configuration注解,那么@EnableConfigurationProperties注解可以省略
/@component
@Configuration
@PropertySource("classpath:test.properties")
@EnableConfigurationProperties(MyProperties.class)
@ConfigurationProperties(prefix ="test")
public class MyProperties{}
使用@ImportResource加载XML配置文件
- 相关注解:
@ImportResource:指定XML文件位置 - 案例演示
1、在chapter02项目下新建一个com.itheima.config包,并在该包下新
创建一个类MyService,该类中不需要编写任何代码。
public class MyService{}
2、在resources目录下新建一个名为beans.xml的XML自定义配置文件,在该配置文件中通过配置向Spring容器中添加MyService类对象。
<?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="myService"class="com.itheima.config.MyService"/>
</beans>
3、项目启动类上添加@ImportResource注解来指定XML文件位置。@ImportResource(“classpath:beans.xml”)
4、在测试类中引入ApplicationContext实体类Bean,并新增一个测试方法进行输出测试。
@Autowired
private ApplicationContext = applicationContext;
@Test
public void iocTest(){
System.out.println(applicationContext.containsBean("myService"));}
使用@Configuration编写自定义配置类
- 相关注解:
@Configuration:定义一个配置类
@Bean:进行组件配置 - 案例演示
1、在现有的项目基上建一个类MyConfig,使用@Configuration注解将该类声明一个配置类。
@Configuration
public class MyConfig
@Bean
public MyService myService(){
return new MyService();
}
2.4 Profile多环境配置
Profile多环境配置
- 为什么需境配置?
在实际开发中,应用程序通常需要部署到不同的运行环境中,例如开发环境、测试环境、生产环境等。不同的环境可能需要不同的环境配置,针对这种情况,不可能手动变更配置文件来适应不同的开发环境,此时就需要对项目进行多环境配置。 - 多环境配置方式
Profile文件多环境配置
@Profile注解多环境配置
使用Profile文件进行多环境配置
- 多环境配置文件格式
application-(profile).properties
注:{profile}对应具体的环境标识(dev/prod/test)
- 激活指定环境的方式
- 通过命令行方式激活指定环境的配置文件
- 在全局配置文件设置spring-profiles.active属性激活
- 通过命令行方式激活指定环境的配置文件
使用@Profile注解进行多环境配置
- 相关注解
- @Profile:作用于类,通过valuel属性指定环境配置
- 注:等同于Profile文件名称中的profile值。
- 注:等同于Profile文件名称中的profile值。
- @Profile:作用于类,通过valuel属性指定环境配置
- 激活指定环境的方式
- 在全局配置文件中配置spring.profiles.active属性
- 在全局配置文件中配置spring.profiles.active属性
2.5随机值设置以及参数间引用
随机值设置
- 语法格式
${random.xx} xx表示需要指定生成的随机数类型和范围 - 示例代码
#配置随机数
my.secret=$(random.value)
#配置随机数为整数
my.number=$frandom.int
#配置随机数为1ong类型
my.bignumber=$(random.long)
#配置随机数为uuid类型
my.uuid=$(random.uuid}
#配置小于10的随机整数
my.number.less.than.ten=$random.int(10)
#配置范围在【1024,65536】之间的随机整数
my.number.in.range=$frandom.int[1024,65536])
随机值设置以及参数间引用
- 案例演示(随机值设置以及参数值引用)
- 1.在全局配置文件application.properties中设置测试属性。
tom.age=${random.int[10,20]}
tom.description=tom的年龄可能是${tom.age}
- 1.在全局配置文件application.properties中设置测试属性。
参数间引用
- 语法格式
${xx} xx表示先前在配置文件中已经配置过的属性名 - 示例代码
app.name=MyApp
app.description=${app.name}is a Spring Boot application