全局配置文件可以对一些默认的配置进行修改 (作用) 全局配置文件存放在resources目录下 全局配置文件可以是application.properties或者application.yaml /application.yml
2.1.1 application.properties配置文件
创建项目,在application.properties中修改端口号为8081,访问路径修改为/chapter021
2.1.2 application.yaml配置文件
1.基本语法 (注意冒号的中英文)
Key:(空格)value
数组(List、Set):用-值表示数组中的一个元素
Application.properies和application.yaml的区别
- properties中以“.”进行分割,yaml中以“:”分割yaml中缩进不能使用Tab,只能用空格在同一优先级目录下,application.properties会覆盖application.yaml中相同的内容。
注意:使用@ConfigurationProperties注解批量注入属性值时,要保证配置文件中的属性与对应实体类的属性一致,否则无法正确获取并注入属性值
- 完成单个属性值的注入使用该注解注入的属性类型只能是基本的数据类型(如数字、字符串、布尔等)。不能是对象类型、数组类型或者集合类型。
2.2.3 两种注解对比分析
验证松散绑定和JSR303数据检验:
在pom.xml文件中添加如下依赖
org.springframework.boot
spring-boot-configuration-processor
true
添加@Email注解后报红
在pom.xml文件中的标签中添加如下依赖:
org.springframework.boot
spring-boot-starter-validation
----指定自定义配置文件的位置和名称2.3.2 使用@importResource注解加载xml文件
---指定XML文件位置
SpringBoot默认不再使用XML 文件配置项目,但是如果希望将外部的xml文件加载到程序中,可以使用@importResource注解加载xml文件。
@Configuration注解可以指定配置类,它的作用和xml文件配置是一样的。
配置类中的@Bean注解方法返回的对象作为Bean注入Spring容器,并且默认情况下,使用@Bean注解的方法名就是组件名。
问题:
把@importResource注释掉,myService改为myService1,报错 ???
成功解决:先启动了Chapter02Application类,然后启动测试类,不报错了!!!!???
- 多环境配置文件格式
Application-{profile}.properties {profile}对应具体的环境标识
2.可以通过命令行或者在全局配置文件中配置
(1) 命令行方式
单击图中的m,会弹出对话框,输入mvn clean,执行clean命令,删除掉target文件夹。
再单击图中的m,弹出的对话框中输入mvn package,对项目进行打包,生成target文件夹。
问题:打包成功后,在Terminal中输入java -jar chapter021-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev,出现错误
应该是Java版本的问题,于是把项目中的Java版本由11改为8还是报相同的错,最后重新创建了项目,
成功解决
(2) 全局配置文件中进行配置
语法格式:${random.xx} xx表示需要生成的随机数类型和范围
- 随机值设置
在application.properties中写以下代码:
测试类中代码:
报这个错误java.lang.Exception: No tests found matching Method randomTest
原因在测试类中没加@Test,加上之后运行成功
- 参数间引用
语法格式:${xx} xx表示先前在配置文件中已经配置过的属性名
在application.properties中的代码:
在测试类中的代码:
问题:控制台中文乱码
解决方案:
还需要在全局配置文件中添加如下代码:
【学习总结】使用@ConfigurationProperties注入属性
使用@Value注入属性
使用@PropertySource加载配置文件 指定自定义配置文件的位置和名称
使用@importResource加载XML配置文件 指定XML文件位置
使用@Configuration编写自定义配置类 自定义配置类,Spring容器组件
@ Bean:进行组件配置
使用Profile文件进行多环境配置,使用@Profile注解进行多环境配置



