Spring Boot系列——配置相关

Posted Drajun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot系列——配置相关相关的知识,希望对你有一定的参考价值。

〇、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=配置文件路径

   

七、配置文件优先级顺序

  官网文档:https://docs.spring.io/spring-boot/docs/2.0.0.RC1/reference/htmlsingle/#boot-features-external-config

  注意:各文件不是独立生效,而是若参数相同,则按优先级;若参数不同,则各文件互补。

  

以上是关于Spring Boot系列——配置相关的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot系列——日志配置

Spring Boot系列Spring Boot初级应用及配置文件

Java学习(随笔)—Spring boot以及Gradle相关

Spring Boot 基础概述与相关约定配置

Spring Boot部署JAR文件瘦身优化经验分享

04-Spring Boot基本配置