springboot外部加载配置文件

从jar外面加载配置文件

import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.core.env.PropertiesPropertySource;
import org.springframework.core.env.StandardEnvironment;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.web.client.RestTemplate;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.io.File;
import java.io.IOException;
import java.util.Properties;

@SpringBootApplication
@EnableSwagger2
@EnableGlobalCors
@EnableWebLog
@EnableHystrix
public class SpringBootApp{
/*
   public static void main(String[] args) {
        SpringApplication.run(SpringBootApp.class,args);
    }*/
 private static final Logger LOGGER = LoggerFactory.getLogger(SpringBootApp.class);
 public static void main(String[] args) throws IOException {
     SpringApplication springApplicationBuilder = new SpringApplication(SpringBootApp.class);
     Properties properties = getProperties();
     StandardEnvironment environment = new StandardEnvironment();
     environment.getPropertySources().addLast(new PropertiesPropertySource("micro-service", properties));
     springApplicationBuilder.setEnvironment(environment);
     springApplicationBuilder.run(args);

 }

    private static Properties getProperties() throws IOException {
        PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        propertiesFactoryBean.setIgnoreResourceNotFound(false);

        //获取jar所在目录
        String parent = new File(VehicleExhEmifoApp.class.getProtectionDomain().getCodeSource().getLocation().getFile()).getParent();
        int index = parent.indexOf(".jar");
        if(index > 0){
            parent = parent.substring(0, index + 4);
            parent = new File(parent).getParent();
        }

        //加载可能存在的自定义的配置文件
        String property = String.format("%s/config/application.properties", parent);
        LOGGER.info(String.format("读取配置文件:%s", property));
        File f = new File(property);
        if(!f.exists()){
            Properties prop = new Properties();
            prop.load(VehicleExhEmifoApp.class.getResourceAsStream("/application.properties"));
            return prop;
        }
        Resource fileSystemResource = resolver.getResource(property);
        propertiesFactoryBean.setLocations(fileSystemResource);
        propertiesFactoryBean.afterPropertiesSet();
        return  propertiesFactoryBean.getObject();
    }



}

dockerFile写法

FROM java:latest
MAINTAINER docker_user
ADD SpringBootApp.jar /root/
RUN mkdir -p /root/config/
ADD application.properties /root/config/
WORKDIR /tmp
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/shanghai" > /etc/timezone;
CMD ["nohup","java","-jar","/root/SpringBootApp.jar","&"]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容