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","&"]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容