spring boot 自定义配置文件路径

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;
    }
}


版权声明:本文为weixin_43949403原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。