1、第2章 Spring Boot核心配置和注解全局配置文件Spring Boot 自定义配置随机值设置以及参数值引用 配置文件属性值的植入 Profile多环境配置 学习目标熟 悉了 解掌 握掌 握熟悉Spring Boot全局配置文件的使用以及自定义配置12掌握Spring Boot配置文件属性值注入掌握Profile多环境配置34了解随机值设置以及参数间引用 目录配置文件属性值的注入2.22.22.12.1全局配置文件2.32.3Spring Boot自定义配置Profile多环境配置2.42.4随机值设置以及参数间引用2.52.5点击查看本案例相关知识点点击查看本案例相关知识点点击查看本案
2、例相关知识点点击查看本案例相关知识点 2.1 全局配置文件 知识架构12application.properties配置文件application.yaml配置文件 2.2 配置文件属性值的注入 知识架构123使用ConfigurationProperties注入属性使用Value注入属性两种注解对比分析 2.3 Spring Boot自定义配置 知识架构12使用PropertySource加载配置文件 使用Configuration编写自定义配置类3使用ImportResource加载XML配置文件 2.4 Profile多环境配置多环境配置 知识架构12使用Profile文件进行多环境配置
3、使用Profile注解进行多环境配置 章节概要 第一章简单介绍了Spring Boot的基本知识,并动手搭建了第一个Spring Boot应用,体会到了Spring Boot惊人的配置简化。本章将带大家学习Spring Boot的核心配置与注解,了解Spring Boot为什么能做到如此精简。 2.1 全局配置文件Spring Boot全局配置文件application.propertiesapplication.yamlSpring Boot的全局配置文件存放路径: src/main/resource目录或者类路径的/config 2.1 全局配置文件Application.properti
4、es配置文件更多配置属性,详见官网https:/docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.htmlserver.address=80server.port=8443spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.config.additional-location= spring.config.location= spring.config.name=application自定义属性设置的
5、示例 2.1 全局配置文件Application.yaml 配置文件YAML文件格式是Spring Boot支持的一种JSON超集文件格式。相较于传统的Properties配置文件,YAML文件以数据为核心,是一种更为直观且容易被电脑识别的数据序列化格式。application.yaml文件的工作原理和application.properties一样。概念: 2.1 全局配置文件Application.yaml 配置文件key:(空格)valueserver: port: 8081 path: /hello语法格式示例代码: 2.1 全局配置文件Application.yaml 配置文件1.
6、value的值为普通数据类型server:port: 8081path: /helloYAML文件中的value值类型不同,写法不同。 2.1 全局配置文件Application.yaml 配置文件2. value的值为数组和单列集合YAML文件中的value值类型不同,写法不同。person: hobby: - play - read - sleep person: hobby: play,read,sleep缩进式写法行内式写法 2.1 全局配置文件Application.yaml 配置文件3. value的值为Map集合或对象YAML文件中的value值类型不同,写法不同。person:
7、 map: k1: v1 k2: v2person: map: k1: v1,k2: v2缩进式写法行内式写法 2.2 配置文件属性值注入相关注解:使用ConfigurationProperties注入属性ComponentConfigurationProperties(prefix = “xxx”) 2.2 配置文件属性值注入注意:使用ConfigurationProperties注解批量注入属性值时,要保证配置文件中的属性与对应实体类的属性一致,否则无法正确获取并注入属性值。使用ConfigurationProperties注入属性ComponentConfigurationPropert
8、ies(prefix = person)public class Person private int id; public void setId(int id) this.id = id;示例代码 2.2 配置文件属性值注入使用Value注入属性相关注解:ComponentValue 2.2 配置文件属性值注入使用Value注入属性示例代码Componentpublic class Person Value($person.id) private int id; 使用Value注解对每一个属性注入设置,免去了属性setXX()方法 2.2 配置文件属性值注入两种注解的对比分析对比点Confi
9、gurationPropertiesValue底层框架Spring BootSpring功能批量注入配置文件中的属性单个注入属性setXX()方法需要不需要复杂类型属性注入支持不支持松散绑定支持不支持JSR303数据校验支持不支持SpEL表达式不支持支持 2.3 Spring Boot自定义配置使用PropertySource加载配置文件相关注解: PropertySource:指定自定义配置文件的位置和名称 Configuration :自定义配置类,Spring容器组件 2.3 Spring Boot自定义配置使用PropertySource加载配置文件1、创建Spring Boot项目,
10、添加Web依赖。2、在项目的类路径下新建一个test.properties自定义配置文件,在该配置文件中编写需要设置的配置属性。案例演示#对实体类对象对实体类对象MyProperties进行属性配置进行属性配置test.id=110test.name=test 2.3 Spring Boot自定义配置使用PropertySource加载配置文件3、在com.itheima.domain包下新创建一个配置类MyProperties,提供test.properties自定义配置文件中对应的属性,并根据PropertySource注解的使用进行相关配置。 案例演示Configuration Prop
11、ertySource(classpath:test.propertiesEnableConfigurationProperties(MyProperties.class) ConfigurationProperties(prefix = testpublic class MyProperties 2.3 Spring Boot自定义配置使用PropertySource加载配置文件4、在测试类中引入MyProperties实体类Bean对象,并新增一个测试方法进行输出测试。案例演示Autowiredprivate MyProperties myProperties;Testpublic void
12、 myPropertiesTest() System.out.println(myProperties); 2.3 Spring Boot自定义配置使用PropertySource加载配置文件5、查看测试结果,如图所示案例演示 2.3 Spring Boot自定义配置使用ImportResource加载XML配置文件相关注解: ImportResource:指定XML文件位置 2.3 Spring Boot自定义配置使用ImportResource加载XML配置文件案例演示1、在chapter02项目下新建一个com.itheima.config包,并在该包下新创建一个类MyService,该
13、类中不需要编写任何代码。public class MyService 2.3 Spring Boot自定义配置使用ImportResource加载XML配置文件案例演示2、在resources目录下新建一个名为beans.xml的XML自定义配置文件,在该配置文件中通过配置向Spring容器中添加MyService类对象。 2.3 Spring Boot自定义配置使用ImportResource加载XML配置文件案例演示3、项目启动类上添加ImportResource注解来指定XML文件位置。ImportResource(classpath:beans.xml) 2.3 Spring Boot
14、自定义配置使用ImportResource加载XML配置文件案例演示4、在测试类中引入ApplicationContext实体类Bean,并新增一个测试方法进行输出测试。Autowiredprivate ApplicationContext applicationContext;Testpublic void iocTest() System.out.println(applicationContext.containsBean(myService); 2.3 Spring Boot自定义配置使用ImportResource加载XML配置文件案例演示5、测试结果如图所示。 2.3 Spring
15、 Boot自定义配置使用Configuration编写自定义配置类相关注解: Configuration:定义一个配置类 Bean:进行组件配置 2.3 Spring Boot自定义配置使用Configuration编写自定义配置类1、在现有的项目基础上新建一个类MyConfig,使用Configuration注解将该类声明一个配置类。Configuration public class MyConfig Bean public MyService myService() return new MyService(); 案例演示 2.3 Spring Boot自定义配置使用Configurat
16、ion编写自定义配置类2、在项目启动类上添加的ImportResource注解注释,执行项目测试类中的测试方法iocTest(),查看控制台输出效果,结果如图。案例演示 2.4 Profile多环境配置Profile多环境配置为什么需要多环境配置?在实际开发中,应用程序通常需要部署到不同的运行环境中,例如开发环境、测试环境、生产环境等。不同的环境可能需要不同的环境配置,针对这种情况,不可能手动变更配置文件来适应不同的开发环境,此时就需要对项目进行多环境配置。 2.4 Profile多环境配置Profile多环境配置多环境配置方式Profile文件多环境配置Profile注解多环境配置 2.4
17、Profile多环境配置使用Profile文件进行多环境配置注:profile对应具体的环境标识多环境配置文件格式application-profile.properties激活指定环境的方式通过命令行方式激活指定环境的配置文件在全局配置文件设置spring.profiles.active属性激活 2.4 Profile多环境配置使用Profile注解进行多环境配置注:等同于Profile文件名称中的profile值。相关注解 Profile:作用于类,通过value属性指定环境配置 激活指定环境的方式在全局配置文件中配置spring.profiles.active属性 2.5 随机值设置以及
18、参数间引用随机值设置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.in.range=$random.int1024,65536 语法格式$random.xxxx表示需要指定生成的随机数类型和范围示例代码 2.5 随机值设置以及参数间引用参数间引用app.name=MyAppapp.description=$app.name is a Spring Boot
19、application语法格式$xxxx表示先前在配置文件中已经配置过的属性名。示例代码 2.5 随机值设置以及参数间引用随机值设置以及参数间引用案例演示(随机值设置以及参数值引用)1. 在全局配置文件application.properties中设置测试属性。tom.age=$random.int10,20tom.description=tom的年龄可能是的年龄可能是$tom.age 2.5 随机值设置以及参数间引用随机值设置以及参数间引用案例演示(随机值设置以及参数值引用)1、在全局配置文件application.properties中设置测试属性。tom.age=$random.int1
20、0,20tom.description=tom的年龄可能是的年龄可能是$tom.age 2.5 随机值设置以及参数间引用随机值设置以及参数间引用案例演示(随机值设置以及参数值引用)2、在测试类中新增字符串类型的description属性,注入配置文件中的tom.description属性,新增测试方法进行输出测试。Value($tom.description)private String description;Testpublic void placeholderTest() System.out.println(description); 2.5 随机值设置以及参数间引用随机值设置以及参数间引用案例演示(随机值设置以及参数值引用)3、运行测试方法,输出结果