SpringBoot根据环境加载不同的properties配置文件

一、背景需求
在项目中遇到多个环境配置的问题,yml可以配置springboot的配置,自己想自定义properties文件来配置自定义的内容,避免频繁改环境引起配置文件频繁修改,可以实现不同的环境加载不同的properties自定义的配置文件。
二、问题解决
采用springboot自带的@Profile注解来加载不同的properties配置文件,实现不同的环境加载不同的properties配置文件;
目录结构如下:
在这里插入图片描述
application-${env}.yml是springboot各个环境的具体配置,config_dev.properties和config_prod.properties对应开发环境和生产环境的自定义配置,spring.profile.active指定了采用了那个环境,根据采用的环境来加载自定义配置文件;
三、代码配置
application-dev.properties

### 配置client网关调用本地测试API的地址
client.access.ip = 172.23.17.178
### 配置client网关调用本地测试API的端口
client.access.port = 9080
### 配置client网关调用Remote API的公共前缀
client.access.prefix = /api/yjs/v1/index/

application-prod.properties

### 配置client网关调用Remote API的地址
yjs.client.access.ip = api.ok.un-net.com
### 配置client网关调用Remote API的端口
yjs.client.access.port = 80
### 配置client网关调用Remote API的公共前缀
yjs.client.access.prefix = /api/yjs/v1/index/

开发环境的自定义配置文件加载

package com.careland.processonline.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;

@Profile("dev")
@Configuration
@PropertySource(value = "classpath:conf/application-dev.properties", ignoreResourceNotFound = true, encoding = "UTF-8")
public class PropertyDevelopmentConfig {
    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }
}

生产环境的自定义配置文件加载

package com.careland.processonline.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;

@Profile("prod")
@Configuration
@PropertySource(value = "classpath:conf/application-prod.properties", ignoreResourceNotFound = true, encoding = "UTF-8")
public class PropertyProductConfig {
    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }
}

自定义配置文件的配置读取类:

package com.careland.processonline.Factory;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
@SuppressWarnings("all")
public class PropertyFactory {

    /**调用API服务的IP地址*/
    private static String ACCESS_IP;

    @Value("${systemconfig.serverip}")
    public void setAccessIp(String accessIp) {
        ACCESS_IP = accessIp;
    }

    public static String getAccessIp() {
        return ACCESS_IP;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: SpringBoot中可以通过配置profile来实现多环境配置文件,只需要在application.properties或application.yml中添加spring.profiles.active属性,指定当前激活的环境即可。例如,可以在application.properties中添加:spring.profiles.active=dev,这样SpringBoot就会激活dev环境加载application-dev.properties配置文件。 ### 回答2: SpringBoot配置环境配置文件可以通过以下步骤实现: 1. 创建配置文件:在项目的资源文件夹下创建多个不同环境配置文件,通常以"application-"开头,并在文件名中添加环境标识,如"application-dev.properties"、"application-test.properties"等。 2. 配置文件内容:在各个配置文件中,根据不同环境的需求,设置不同配置属性值。可以设置数据库连接、服务端口、日志级别等等。 3. 设置激活环境:在主配置文件(通常是"application.properties")中,通过设置"spring.profiles.active"属性来指定当前激活的环境。例如,设置为"dev"表示激活开发环境。 4. 使用配置属性:在代码中,可以使用"@Value"注解或者使用"Environment"对象来获取配置文件中的属性值。通过这种方式,可以根据不同环境配置来动态改变应用程序的行为。 5. 多个配置文件的优先级:当存在多个配置文件时,SpringBoot将按照一定的优先级进行加载。其中,主配置文件具有最低优先级,而具体环境配置文件具有更高的优先级。因此,如果某个配置属性在多个文件中都存在,那么后加载配置文件会覆盖前面加载配置。 通过以上步骤,我们就可以在SpringBoot项目中实现多环境配置文件。这样,我们可以根据不同环境需求,灵活地配置应用程序的各个属性,提高了适应不同环境变化的能力。 ### 回答3: Spring Boot中配置环境配置文件可以通过使用不同配置文件来实现。一种常用的配置方式是通过在application.properties(或application.yml)文件中使用不同的profile来指定环境。 首先,在src/main/resources目录下创建application-{profile}.properties(或application-{profile}.yml)文件,其中{profile}代表环境名称,例如application-dev.properties(或application-dev.yml)代表开发环境配置文件,application-prod.properties(或application-prod.yml)代表生产环境配置文件。 然后,在application.properties(或application.yml)文件中,添加一个配置项spring.profiles.active={profile}来指定使用哪个环境配置文件。例如,如果想要使用开发环境配置文件,可以设置spring.profiles.active=dev。 接下来,在具体的配置文件中,可以根据不同的需要设置不同配置项。例如,在开发环境配置文件中可以设置数据库连接的URL为本地环境的URL,而在生产环境配置文件中可以设置数据库连接的URL为线上环境的URL。 最后,在代码中通过注解@Value("${配置项名称}")来获取配置文件中的配置项的值。Spring Boot会根据当前使用的环境自动加载相应的配置文件,并将对应的配置项的值注入到相应的字段中。 通过这种方式,我们可以根据不同环境使用不同配置文件,方便地进行开发、测试和部署。同时,Spring Boot还支持其他灵活的配置方式,例如使用命令行参数或环境变量来指定使用哪个环境配置文件
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值