spring boot 自定义配置文件路径

该博客介绍了如何在SpringBoot应用中设置自定义配置文件`bootstrap.yml`,并从`/opt/appconf/`路径加载。通过`SpringApplicationBuilder`配置额外的属性,并利用`YamlPropertiesFactoryBean`读取`bootstrap.yml`来获取配置项,实现启动时加载特定环境配置。

spring boot 自定义配置文件路径

bootstrap.yml

#系统级别的参数配置,用于应用程序上下文的引导阶段,先于application.yml加载
spring:
  config:
    additional-location: file:/opt/appconf/
  profiles:
    active:
      - 'devd'
      - 'common'

启动类

import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;

/**
 * 入口类
 */
@SpringBootApplication(scanBasePackages = "com")
@EnableCaching
@EnableDiscoveryClient
public class WebApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        new SpringApplicationBuilder(WebApplication.class).properties("spring.config.name:application-additional-location", getAdditionalLocation()).build().run(args);
//			SpringApplication.run(WebApplication.class, args);
    }
    /**
 		* war 启动
 		*/
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(WebApplication.class).properties("spring.config.name:application-additional-location", getAdditionalLocation());
//        return builder.sources(WebApplication.class);
    }
    private static String getAdditionalLocation() {
        //		如果file: 与resource目录相同优先使用file:
        String addClassPath = "spring.config.additional-location:" +
                "file:./config/,file:./," +
                "classpath:/config/," +
                "classpath:/,";
        ResourceLoader resourceLoader = new DefaultResourceLoader();
        Resource inputFile = resourceLoader.getResource("classpath:bootstrap.yml");
        YamlPropertiesFactoryBean yamlPropertiesFactoryBean = new YamlPropertiesFactoryBean();
        yamlPropertiesFactoryBean.setResources(inputFile);
        yamlPropertiesFactoryBean.afterPropertiesSet();
        if (yamlPropertiesFactoryBean.getObject().containsKey("spring.config.additional-location")) {
            addClassPath = addClassPath.concat(yamlPropertiesFactoryBean.getObject().get("spring.config.additional-location").toString());
            System.out.println(addClassPath);
        }
        return addClassPath;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值