Springboot多环境配置及使用

2023-07-18 14:13:03 浏览数 (2)

一、问题

软件开发中经常有开发环境、测试环境、生产环境,而且一般这些环境配置会各不相同,手动改配置麻烦且容易出错,如何管理不同环境的配置参数呢?spring-boot maven可以解决不同环境独立配置不同参数的问题。

二、多环境配置

不同环境的配置yml文件名不一样:

代码语言:javascript复制
1application-dev.yml(开发环境)
2application-test.yml(测试环境)
3application-prd.yml(生产环境)

eg:

三、配置文件

application-dev.yml配置示例:

代码语言:javascript复制
 1web:
 2  resource-path: D:/dreamer-cms/
 3
 4spring: 
 5  datasource: 
 6    name: dev
 7    url: jdbc:mysql://127.0.0.1:3306/dreamer-cms?serverTimezone=GMT&useSSL=false&useUnicode=true&characterEncoding=UTF8
 8    username: root
 9    password: root
10    driver-class-name: com.mysql.cj.jdbc.Driver
11  redis:
12    host: 127.0.0.1
13    port: 6379
14    timeout: 2000
15    password: YTU3e^u!gN^6HHPm
16    jedis:
17      pool:
18        max-idle: 100
19        min-idle: 50
20        max-wait: -1

application.yml

代码语言:javascript复制
1spring:
2  profiles:
3    active: dev #如果要切换不同环境,只需要修改spring.profiles.active即可。

如果要切换不同环境,只需要修改spring.profiles.active即可。application-prd.yml和dev配置一样,只修改配置项的值即可。

四、读取配置参数

1、读取单个配置参数:

代码语言:javascript复制
 1@Component
 2public class FileConfiguration {
 3    @Value("${web.resource-path}")
 4    private String resourceDir;
 5
 6    public String getResourceDir() {
 7        return resourceDir;
 8    }
 9
10    public void setResourceDir(String resourceDir) {
11        this.resourceDir = resourceDir;
12    }
13}

如果只是读取单个配置信息可以直接使用@Value注解,如果要读取多个配置,建议使用@ConfigurationProperties(prefix = "web")注解,prefix="web"则表示读取web下的配置。如下代码: 2、读取多个配置参数:

代码语言:javascript复制
1web:
2  name: wangjn
3  age: 18
代码语言:javascript复制
1@Component
2@ConfigurationProperties(prefix = "web")
3public class WebConfig {
4    private String name;
5    private Integer age;
6    //省略getter、setter
7}
五、验证环境参数
代码语言:javascript复制
 1@RestController
 2public class TestController {
 3    @Autowired
 4    private WebConfig webConfig;
 5
 6    @RequestMapping("/env")
 7    @ResponseBody
 8    public Object testEnv() {
 9        return webConfig;
10    }
11}
六、启动设置环境

1、启动jar包时设置spring.profiles.active

代码语言:javascript复制
1java -jar muti-env-config.jar --spring.profiles.active=prd

2、maven打包时候设置环境(设置 prd 环境)

代码语言:javascript复制
1clean package -DskipTests -Pprd

0 人点赞