ToB企服应用市场:ToB评测及商务社交产业平台

标题: 3、SpringBoot2之配置文件 [打印本页]

作者: 丝    时间: 2024-2-26 16:43
标题: 3、SpringBoot2之配置文件
3.1、环境搭建

3.1.1、在project创建新module


3.1.2、选择maven


3.1.3、设置module名称和路径



3.1.4、module初始状态


3.1.5、引入springboot父工程

  1.     <parent>
  2.         <groupId>org.springframework.boot</groupId>
  3.         <artifactId>spring-boot-starter-parent</artifactId>
  4.         <version>2.7.18</version>
  5.     </parent>
复制代码
3.1.6、引入启动器依赖

  1.     <dependencies>
  2.         <dependency>
  3.             <groupId>org.springframework.boot</groupId>
  4.             <artifactId>spring-boot-starter-web</artifactId>
  5.         </dependency>
  6.     </dependencies>
复制代码
3.1.7、创建启动类

  1. package online.liaojy;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. /**
  5. * @author liaojy
  6. * @date 2023/12/18 - 6:24
  7. */
  8. @SpringBootApplication
  9. public class MainApplication {
  10.     public static void main(String[] args) {
  11.         SpringApplication.run(MainApplication.class,args);
  12.     }
  13. }
复制代码
3.1.8、创建控制器

  1. package online.liaojy.controller;
  2. import org.springframework.web.bind.annotation.RestController;
  3. /**
  4. * @author liaojy
  5. * @date 2023/12/18 - 7:04
  6. */
  7. @RestController
  8. public class TestController {
  9. }
复制代码
3.2、统一配置管理概述


在 Spring Boot 工程的统一配置文件中,有自定义的参数项,也有固定的参数项,固定的参数项及默认值见 Spring Boot 官方文档:
https://docs.spring.io/spring-boot/docs/2.7.18/reference/html/application-properties.html
3.3、properties配置文件

3.3.1、创建application.properties配置文件

  1. # application.properties 为统一配置文件,既可以配置固定功能的参数项,也可以配置自定义的参数项
  2. # 固定功能参数项的示例
  3. server.port=8088
  4. server.servlet.context-path=/application
  5. # 自定义参数项的示例
  6. my.name=liaojy
复制代码
3.3.2、读取配置文件中的参数值


在统一配置文件中的参数项的值,都可以使用@Value("${键}")的方式直接读取,但一般都是读取自定义的参数项的值
  1.     @Value("${my.name}")
  2.     private String name;
  3.     @RequestMapping("/readApplication")
  4.     public String readApplication(){
  5.         return "Hello,"+name+"!";
  6.     }
复制代码
3.3.3、测试效果


3.4、yaml配置文件(了解)

3.4.1、yaml概述

注意:因为 YAML 配置文件无法搜索完整的参数项名称,且空格和缩进的格式经常被人诟病,所以本文更推荐使用 properties 配置文件
3.4.2、创建application.yml配置文件

  1. # application.yml 为统一配置文件,既可以配置固定功能的参数项,也可以配置自定义的参数项
  2. # 固定功能参数项的(properties)示例
  3. # server.port=8088
  4. # server.servlet.context-path=/application
  5. # 固定功能参数项的(yml)示例
  6. server:
  7.   port: 8088          # 注意冒号 “ : ” 和值之间有一个空格
  8.   servlet:
  9.     context-path: /application
  10. # 自定义参数项的(properties)示例,properties不支持复杂的数据类型
  11. # my.name=liaojy
  12. # 自定义参数项的(yml)示例
  13. my:
  14.   name: liaojy
  15.   hobby:              # yml支持复杂的数据类型,,集合类型可以通过减号 “ - ” 来表示
  16.     - book
  17.     - music
  18.     - movie
复制代码
3.4.3、读取配置文件中的参数值


读取 YAML 配置文件中参数值的方式,和读取 properties 配置文件中参数值的方式相同,都是使用@Value("${键}")的方式直接读取;
需要注意的是,使用@Value("${键}")的方式,不能读取集合类型(本例为 my.hobby )的值,
如果希望读取集合类型的值,则需要使用 @ConfigurationProperties 注解(详细见3.5节)
  1. @Value("${my.name}")
复制代码
3.4.4、测试效果



3.5、配置的批量注入

3.5.1、创建组件类

  1. package online.liaojy.pojo;
  2. import org.springframework.stereotype.Component;
  3. import java.util.List;
  4. /**
  5. * @author liaojy
  6. * @date 2023/12/19 - 7:12
  7. */
  8. // @Component 注解的作用是将类标识为bean组件,因为只有在ioc容器中才能使用依赖注入给成员变量赋值
  9. @Component
  10. public class Me {
  11.     private String name;
  12.     private List<String> hobby;
  13.     public String getName() {
  14.         return name;
  15.     }
  16.     public void setName(String name) {
  17.         this.name = name;
  18.     }
  19.     public List<String> getHobby() {
  20.         return hobby;
  21.     }
  22.     public void setHobby(List<String> hobby) {
  23.         this.hobby = hobby;
  24.     }
  25.     @Override
  26.     public String toString() {
  27.         return "Me{" +
  28.                 "name='" + name + '\'' +
  29.                 ", hobby=" + hobby +
  30.                 '}';
  31.     }
  32. }
复制代码
3.5.2、创建控制器方法

  1.     @Autowired
  2.     private Me me;
  3.     @RequestMapping("/me")
  4.     public Me me(){
  5.         return me;
  6.     }
复制代码
3.5.3、@Value注解的不足

  1.     @Value("${my.name}")
  2.     private String name;
  3.     @Value("${my.hobby}")
  4.     private List<String> hobby;
复制代码

3.5.4、@ConfigurationProperties注解

  1. @ConfigurationProperties(prefix = "my")
复制代码
3.5.5、测试配置批量注入的效果


3.6、多环境的配置

注意:如果希望默认配置文件不太臃肿,也可以使用该功能将不同模块的配置参数存放到不同的配置文件中
3.6.1、配置文件分离


创建一个用于开发环境的配置文件 application-dev.properties
  1. # 该文件的配置用于开发环境
  2. my.name=liaojy_dev
复制代码

创建一个用于测试环境的配置文件 application-test.properties
  1. # 该文件的配置用于测试环境
  2. my.name=liaojy_test
复制代码

创建一个用于测试环境的配置文件 application-prod.properties
  1. # 该文件的配置用于生产环境
  2. my.name=liaojy_prod
复制代码
3.6.2、激活配置文件

  1. # application.properties(.yml) 是 spring boot 的默认配置文件
  2. # 如果没有额外激活其他(有后缀的)配置文件,则默认只使用 application.properties(.yml)
  3. my.name=liaojy_default
  4. # spring.profiles.active 参数用于激活指定的配置文件
  5. # 本例激活的是 application-dev.properties 配置文件
  6. # 如果想激活多个配置文件,则使用逗号分隔,例如:spring.profiles.active=dev,test
  7. spring.profiles.active=dev
复制代码
3.6.3、配置参数的优先级

3.6.4、测试效果




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4