zoukankan      html  css  js  c++  java
  • Spring Boot:项目启动时读取不同的配置文件

    首先用 SpringBoot 写一个 demo,其项目中 src 结构如下。

    ├─main
    │  ├─java
    │  │  └─com
    │  │      └─company
    │  │          └─demo
    │  │              │  DemoApplication.java
    │  │              │
    │  │              └─controller
    │  │                      IndexController.java
    │  │
    │  └─resources
    │      │  application-dev.properties
    │      │  application-pro.properties
    │      │  application.properties
    │      │
    │      ├─static
    │      └─templates
    └─test

     IndexController.java 中的代码是:

    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.http.ResponseEntity;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class IndexController {
    
        @Value("${environment}")
        private String environment;
    
        @Value("${password}")
        private String password;
    
        @RequestMapping("/")
        public ResponseEntity<?> index() {
            return ResponseEntity.ok(environment + " " + password);
        }
    }

     配置文件 application.properties 内容:

    spring.profiles.active=dev

     配置文件 application-dev.properties 内容:

    environment=develop
    password=developPassword

     配置文件 application-pro.properties 内容:

    environment=produce

     因为 application.properties 配置了读取 profile 是 dev,所以项目启动时会读取 application-dev.properties 这个配置文件。

    命令行输入 java -jar demo.jar 启动项目。

    访问 http://localhost:8080,可得到结果 develop developPassword

    如何读取外部的配置文件?首先新建一个 application-external.properties 文件,其内容是:

    environment=external
    password=externalPassword

    将文件放在 d:/tmp/ 目录下。

    命令行输入 java -jar demo.jar --spring.config.location=file:d:/tmp/application-external.properties 启动项目。

    可得到结果 external externalPassword,说明读取到了外部配置文件。

    更优的办法:

    或采用命令 java -jar demo.jar --spring.config.additional-location=file:d:/tmp/application-external.properties 这个可以将外部配置文件追加到项目中,而不是直接替换项目中的配置文件。

    需要注意的是 spring.config.additional-location 只是扩展了读取配置的目录。

    对于 dev pro 配置文件选择的问题,有如下两种方式,优先级由高到低:

    第一种,命令行启动时,java -jar -Dspring.profiles.active=pro demo.jar

    第二种,在 application.properties 中添加信息 spring.profiles.active=dev

    查找配置文件的优先级是:首先在 spring.profiles.active 中设置的文件,例如是 dev,那么优先在 application-dev.properties 中查找。只有当 application-dev.properties 中某些配置项没有时才会去 application.properties 中查找。 

     
  • 相关阅读:
    LeetCode Combination Sum III
    LeetCode Contains Duplicate
    CSRF & CORS
    LeetCode Kth Largest Element in an Array
    Maven 使用 Nexus 内部库 代理
    可重定位目标文件
    过程(栈帧结构是干货)
    控制语句(if-else+循环+switch)汇编规则
    程序编码(机器级代码+汇编代码+C代码+反汇编)
    转移指令jmp和跳转指令call
  • 原文地址:https://www.cnblogs.com/colin220/p/11168755.html
Copyright © 2011-2022 走看看