springboot多环境配置文件

本文详细介绍了SpringBoot如何通过多配置文件应对不同环境需求,包括配置文件命名、环境激活、日志配置、多环境文件使用和配置文件优先级。还展示了如何通过注解和Autowired读取配置,以及配置文件在项目部署中的灵活应用。
一.springboot的多配置文件应对场景

介绍:在实际开发的时候,工程会有多个环境,开发环境,测试环境,生产环境,实际上线时,每个环境的数据库地址,服务器端口号等配置会有所不同,所以针对每一个环境,需要一个配置文件,只需要在主配置文件中启动对应的环境的配置文件。

二.springboot的多配置文件的命名方式
#主配置文件
application.properties

#对应环境的配置文件
application-dev.properties
application-test.properties
application-prod.properties

在对应环境拿到工程后需要切换对应的配置文件,只需要在application.properties文件中进行配置那个配置文件启用。

#这样会加载application-test.properties配置文件
spring.profiles.active = test
三.实际生产中指定配置文件生效
#这是springboot在外部指定配置文件生效,
java -jar app.jar --spring.profiles.active=dev--server.port=8060
四.配置多环境日志
logging.config=classpath:logging/logback-${spring.profiles,active}.xml

当环境切换时,会同时切换对应的日志后缀名,这样就可以做到切换配置文件时切换日志文件的后缀名

五.一个环境使用多个配置文件
spring.profiles.include= devFile,devIO

这样设置可以在单个环境中使用多个配置文件

*当多环境文件重复设置时,会以include文件的设置的最后一个的设置为准,可以理解为,从前到后覆盖配置。

六.在某个配置文件中引用其他配置文件的内容

使用${}的形式去调用其他配置文件当中的内容

七.配置文件优先级
#高等级的配置文件会覆盖低等级的同等配置文件
#1.--项目根目录config文件夹里边(优先级最高)
/config


#2.--项目根目录
/


#3.--src/main/resources/config/文件夹里面
classpath:/config


#4.--src/main/resources/
classpath:/

#1-4优先级从高到低,优先级高的配置文件会覆盖优先级低的配置文件内容
八.工程部署时外部指定配置文件
java -jar app.jar --spring.config.logcation=D:/application.properties
九.通过配置文件来动态的设置参数的值(灵活,多变,可以在项目部署时随意修改参数的值)

(1)通过注解形式读取配置文件的路径,来读取配置文件中的变量

/**
 *获取配置文件中的值
 */
@Controller
@PropertySource("classpath:application-test1.properties") //@PropertySource()用来读取配置文件所在的位置
public class test1 {
    @Value("${server.port}") //通过Value注解来读取配置文件中的值
    private String serverPort;

    @RequestMapping(value = "/test")
    @ResponseBody
    public String getServerPort(){
        return serverPort;
    }
}

(2)通过Environment 来获取配置文件

/**
 *获取配置文件中的值
 */
@Controller
public class test1 {
    @Autowired
    private Environment environment;

    @RequestMapping(value = "/test")
    @ResponseBody
    public String getServerPort(){
        return environment.getProperty("server.port");
    }
}

(3)通过@ConfigurationProperties(prefix = “配置文件中的前缀”)

@Component
@ConfigurationProperties(prefix = "nnn")
@Data
public class configurationTest {
    private String name;
}

prefix是前缀的意思,在配置文件中的前缀

server.port=8085
nnn.name = "zestful"

*注意一点,使用ConfigurationProperties的类文件一定要能被spring检测到,可以使用三种方式

直接在类的上边添加@Component

通过测试类在spring容器中进行注册

直接在springboot启动类上边注解的地方添加类

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值