【Java全栈开发】SpringBoot配置文件与多环境配置


Spring Boot使用了一个全局的配置文件 application.properties,放在src/main/resources目录下或者类路径的/config下。 SpingBoot的全局配置文件的作用是对一些默认配置的配置值进行修改,同时也允许用户自定义配置属性。
application.yaml 也是配置文件的一种,两种配置文件的区别是配置属性的文件格式不同。

本博客中使用的均是 application.properties 进行配置

注:如果工程中没有配置文件 application.propertiesapplication.yaml 文件,则可以在资源路径下新建一个

1、配置属性

自定义属性

很多自定义的属性都需要在 application.properties 中定义,常见的例如数据库的常量配置、默认端口号配置等等。除了这些配置常量,还允许自定义常量:

# applicatino.properties 中指定配置
com.atcjx.name=cuijiexiang
com.atcjx.password=123456

在需要使用配置文件中的成员变量上方添加注解@Value(“${path}”),就可以在该成员变量上绑定配置文件类中的值:

@RestController
public class baseController {
    
    
    @Value("${com.atcjx.name}")
    private String name;

    @Value("${com.atcjx.password")
    private String password;

    @RequestMapping("/")
    String request(){
    
    
        System.out.println("读取到的配置文件数据数据:");
        System.out.println("用户名称:" + name);
        System.out.println("密码:" + password);
        return null;
    }
}

启动项目后访问localhost:8080/即可以看到如下的结果:

image-20220330203128898

如果需要注入的属性值太多,一个个绑定耗费大量的时间,为了快速绑定大量配置属性,官方推荐使用 @ConfigurationProprites(prefix = “...”) 注解,指定使用哪里一个配置文件中属性的前缀。

@Component
@ConfigurationProperties(prefix = "com.atcjx")
public class configBean {
    
    

    private String name;
    private String password;
    // 省略get、set方法
}

需要注意的是,@ConfigurationProperties 注解需要注入IOC容器中使用:搭配Spring注入类注解例如 @Component ,同时还需要在入口类上添加增加 @EnableConfigurationProperties

// 开启允许配置文件配置属性
@EnableConfigurationProperties
@SpringBootApplication
public class SpringBootTestApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication.run(SpringBootTestApplication.class, args);
    }
}

需要使用的地方使用Spring注入方式使用:

@RestController
public class baseController {
    
    
    // 使用@AutoWired注入
    @Autowired
    configBean configBean;

    @RequestMapping("/")
    String request(){
    
    
        System.out.println("读取到的配置文件数据数据:");
        System.out.println("用户名称:" + configBean.getName());
        System.out.println("密码:" + configBean.getPassword());
        return "";
    }
}

访问localhost:8080/:读取成功!

image-20220330205525745

随机值属性

很多时候,随机值也是配置的重要一环,如果将随机值的生成放入代码中会造成代码臃肿、不好理解。SpringBoot 配置文件帮助我们解决了这一问题。使用${random}能够随机生成不同类型的值,例如:int、long、string类型。

dudu.secret=${random.value}
dudu.number=${random.int}
dudu.bignumber=${random.long}
dudu.uuid=${random.uuid}
dudu.number.less.than.ten=${random.int(10)}
dudu.number.in.range=${random.int[1024,65536]}

2、配置文件

配置文件优先级

排序方式按照优先级降序排序:

  1. filepath:/config/applicaiton.properties
  2. filepath:/applicaiton.properties
  3. classpath:/config/applicaiton.properties
  4. classpath:/applicaiton.properties

位置如下所示:

image-20220330213518226

更高优先级的配置文件能够覆盖低优先配置文件的配置。

相同路径下的 application.properties application.yml 文件比较,application.properties 的配置优先级会更高!


多环境配置

很多情况下,应用程序需要部署到不同的运行环境,这就会导致不同环境配置上的细节可能会出现不同。就拿日志来说,生产日志会将日志级别设置为WARN或者更高,并需要将日志写入日志文件中,方便运维的维护与管理;开发时日志级别只需要DEBUG级别,将日志输出到控制台或许是不错的选择。

如果每一次发布时,都要删除或替换配置文件,这样会造成不必要的麻烦。SpringBoot提供给我们多环境配置来解决这个问题。

配置多环境之前,需要了解不同环境下的配置文件名各有不同,不同环境配置文件名都是 application 开头,后面添加 “-{profile}” 来指定响应的环境,就例如:

  • application-dev.properties:开发环境配置文件
  • application-prod.properties:生产环境配置文件

名称均可自己定义,主要是用于区分不同环境。现在我们就可以开始多环境配置。

第一步:创建响应环境配置文件

创建好三个环境的配置文件,分别是开发环境、测试环境、生产环境:

image-20220331213903167

第二步:添加默认环境

如果还没有指定默认环境,SpringBoot会默认加载application.properties,如果需要切换环境,就需要在 application.properties中指定开发环境配置文件:

spring.profiles.active=dev

这里的意思是SpringBoot启动时,加载 application-dev.properties 这个配置文件,一定要注意对应文件名称!

现在我们就完成了多环境的配置!

补充

如果项目已经打包,切换环境就需要使用命令行命令来实现:

# 设置启动环境为 dev
java -jar xxx.jar --spring.profiles.active=dev

猜你喜欢

转载自blog.csdn.net/qq_51439643/article/details/123907772