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版权协议,转载请附上原文出处链接和本声明。