Web 项目如何读取外部配置文件

简介: Web 项目如何读取外部配置文件

1. 用于启动时自动获取yml文件

import java.io.File;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.core.env.PropertiesPropertySource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class MyEnvironmentPostProcessor implements EnvironmentPostProcessor {
    private static final String mainYml = "application.yml";
    @Override
    public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
        String parent = System.getProperty("application.path");
        File parentFile = new File(parent);
        if(!parentFile.exists()){
            throw new NullPointerException("外部配置文件为空");
        }else {
            log.info("开始加载外部配置文件");
            File main = loadYml(parent);
            File active = loadMainYml(parent);
            YamlPropertiesFactoryBean mainYml = new YamlPropertiesFactoryBean();
            YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
            mainYml.setResources(new FileSystemResource(main));
            yaml.setResources(new FileSystemResource(active));
            MutablePropertySources propertySources = environment.getPropertySources();
            propertySources.addFirst(new PropertiesPropertySource(main.getName(), mainYml.getObject()));
            propertySources.addFirst(new PropertiesPropertySource(active.getName(), yaml.getObject()));
        }
    }
    public File loadYml(String parent){
        String main = parent + File.separator + mainYml;
        return new File(main);
    }
    public File loadMainYml(String parent){
        YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
        String main = parent + File.separator + mainYml;
        File mainFile = new File(main);
        if(mainFile.exists()){
            yaml.setResources(new FileSystemResource(mainFile));
            String active = yaml.getObject().getProperty("spring.profiles.active");
            String envFile = parent + File.separator + "application-" + active + ".yml";
            return new File(envFile);
        }
        return null;
    }
}
相关文章
|
1月前
|
机器学习/深度学习 人工智能 前端开发
机器学习PAI常见问题之web ui 项目启动后页面打不开如何解决
PAI(平台为智能,Platform for Artificial Intelligence)是阿里云提供的一个全面的人工智能开发平台,旨在为开发者提供机器学习、深度学习等人工智能技术的模型训练、优化和部署服务。以下是PAI平台使用中的一些常见问题及其答案汇总,帮助用户解决在使用过程中遇到的问题。
|
2月前
|
存储 开发框架 NoSQL
ASP.NET WEB——项目中Cookie与Session的用法
ASP.NET WEB——项目中Cookie与Session的用法
36 0
|
2月前
|
开发框架 前端开发 .NET
ASP.NET WEB——项目创建与文件上传操作
ASP.NET WEB——项目创建与文件上传操作
46 0
|
3月前
|
Java Maven
IDEA2022如何创建web项目
IDEA2022如何创建web项目
106 0
|
2月前
|
IDE API 开发工具
 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Web组件
 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Web组件
47 2
|
3月前
|
前端开发 API Docker
web前端开发项目走proxy代理后端接口,构建发布到生产等环境后,如何修改api接口
web前端开发项目走proxy代理后端接口,构建发布到生产等环境后,如何修改api接口
42 0
|
29天前
|
前端开发 JavaScript 数据管理
描述一个使用Python开发Web应用程序的实际项目经验,包括所使用的框架和技术栈。
使用Flask开发Web应用,结合SQLite、Flask-SQLAlchemy进行数据管理,HTML/CSS/JS(Bootstrap和jQuery)构建前端。通过Flask路由处理用户请求,模块化代码提高可维护性。unittest进行测试,开发阶段用内置服务器,生产环境可选WSGI服务器或容器化部署。实现了用户注册登录和数据管理功能,展示Python Web开发的灵活性和效率。
15 4
|
1月前
|
运维 JavaScript 前端开发
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
|
1月前
|
缓存 移动开发 监控
Star 1.3K!推荐一款可以远程调试任意Web项目的开源工具!
Star 1.3K!推荐一款可以远程调试任意Web项目的开源工具!
|
1月前
|
Java Maven Android开发
JAVA Web项目开发创建Web项目(第一天)
JAVA Web项目开发创建Web项目(第一天)