Spring Boot系列(2)——配置相关
〇、Spring Boot的全局配置文件
通过上一篇我们可以知道,构建一个Spring Boot项目时,Spring Boot已经对项目进行了默认配置。但在实际应用中,每个项目有其特殊性,不可能仅使用默认的配置,还需自行添加或修改一些配置。
Spring Boot有两种格式的配置文件:
->application.properties
->application.yml (或.yaml) 特点与语法
全局配置文件的名称(application.xxx)是固定的,后缀可以二选一。两种格式配置效果一样,但语法略有差别。
一、更改默认配置
1.Spring Boot的全部默认配置项:https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#core-properties
2.当我们想更改其中某个配置项时,只需要在我们项目的全局配置文件中直接写就可以覆盖掉默认配置;
例如:修改服务器端口号(默认是8080,现在修改为8081)
.yml文件写法(左) .properties文件写法(右)
再启动程序时,可以看到端口号已经改变
二、获取自定义配置——使用.@ConfigurationProperties
当我们新建了一个Java bean 并希望通过配置文件对其属性赋值:
1.编写Java bean
2.参数配置(注意名称对应,支持松散语法绑定):
3.其中,需要在类前加上注解:
1 /** 2 * @ConfigurationProperties->将本来属性与配置文件中相关的参数绑定 3 * prefix->表示前缀 4 * @ConfigurationProperties只能对在Spring容器的类起作用 5 * @Component->表示Spring容器组件 6 */ 7 @Component 8 @ConfigurationProperties(prefix = "people")
4.@ConfigurationProperties需要导入配置文件解析器依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
5.测试运行
三、获取自定义配置——使用@Value
1.使用@Value注解,其实就像Spring xml配置中的value=" "
<bean id=”” class=””> <property name=”属性名” value=”值”></property> </bean>
2.在Java bean属性前加上@Value("配置参数名")
3.测试运行
4.@ConfigurationProperties与@Value对比
四、引入自定义配置文件
@ConfigurationProperties与@Value注解的配置,都是默认从全局配置文件(application.properties/.yml)中获取值。当我们太多参数要配置,需要一个额外的配置文件来写参数时,可以用以下方法配置。
1.使用@PropertySource注解引入指定配置文件
(1)创建自定义的配置文件,内容格式如同上面所谈
(2)在需要配置的类前加上注解
注意:若全局配置文件中的参数与自定义配置文件中的参数相同,优先使用全局配置文件的参数
五、为容器添加组件(bean)
1.xml配置方式(早期spring风格)
(1)用xml文件配置<bean>...</bean> (2)在启动类上用@ImportResource注解引入该xml文件
2.注解配置方式(配置类)
(1)若在一个类前加上@Configuration注解,则表示这个类为配置类
(2)在配置类的方法前加上@Bean注解,则表示该方法为一个 Java bean,并将该bean加入Spring容器中(bean名为方法名)
(3)测试运行
六、配置文件切换
当我们开发阶段和生产阶段使用的配置参数不一样,又不想频繁将文件中的参数改来改去。我们可以同时创建多份同参数不同值的自定义配置文件,并在全局配置文件中指定使用哪一份。
1.profile切换(.properties文件)
方法:可以新建多个application-{profile标识}.properties/.yml,在全局配置文件中用'spring.profiles.active=profile标识' 指定当前所用配置文件。
(1)分别新建profile文件并添加配置:
application-development.properties——>配置端口号为8082,
application-produce.properties——>配置端口号为8083
在全局配置文件application.properties中填写spring.profiles.active=development
(2)启动程序
2.profile切换(yaml多文档块)
方法:在全局配置文件application.yml中,用‘---’(三个小横杠)切分文档
注意:当.yml配置文件和.properties文件并存时,优先.properties文件生效
3.配置文件切换(命令行参数)
java -jar jar包路径 --spring.config.location=配置文件路径
七、配置文件优先级顺序
注意:各文件不是独立生效,而是若参数相同,则按优先级;若参数不同,则各文件互补。