springboot如何使用外部yml启动-kb88凯时官网登录

来自:网络
时间:2024-06-09
阅读:

springboot使用外部yml启动

有时候我们想更灵活的使用配置文件,例如同一套代码去部署多个客户,此时差异大的地方其实只是配置文件,这是我们希望每次启动项目从外部读取配置文件来加载项目,你可以使用一些配置中心来实现,当然也可以自己定义外部文件来实现。

import com.ctrip.framework.apollo.config;
import com.ctrip.framework.apollo.configchangelistener;
import com.ctrip.framework.apollo.configservice;
import com.ctrip.framework.apollo.model.configchange;
import com.ctrip.framework.apollo.model.configchangeevent;
import lombok.extern.slf4j.slf4j;
import org.springframework.beans.factory.config.yamlpropertiesfactorybean;
import org.springframework.boot.autoconfigure.springbootapplication;
import org.springframework.boot.builder.springapplicationbuilder;
import org.springframework.core.io.filesystemresource;
 
import java.util.properties;
import java.util.set;
 
@springbootapplication
@slf4j
public class litchidaqapplication {
    private static properties properties = new properties();
 
    public static void main(string[] args) {
//		springapplication.run(litchidaqapplication.class, args);
        try {
            string filepath = system.getproperty("user.dir")   "/config"   "/application-daq.yml";
            //此处获取启动参数中的config.id来判断从哪里读取config文件
            string configid = system.getproperty("config.id");
            if (configid != null) {
                //从apollo配置中心获取配置
                config config = configservice.getappconfig();
                //监听apollo配置修改
                config.addchangelistener(new configchangelistener() {
                    @override
                    public void onchange(configchangeevent changeevent) {
                        log.info("发生改变的工作区: {}", changeevent.getnamespace());
                        for (string key : changeevent.changedkeys()) {
                            configchange change = changeevent.getchange(key);
                            log.info(string.format("检测到改变 - key: %s, oldvalue: %s, newvalue: %s, changetype: %s",
                                    change.getpropertyname(), change.getoldvalue(), change.getnewvalue(), change.getchangetype()));
                        }
                    }
                });
                set keys = config.getpropertynames();
                for (string key : keys) {
                    properties.setproperty(key, config.getproperty(key, null));
                }
            } else {
                yamlpropertiesfactorybean factory = new yamlpropertiesfactorybean();
                factory.setresources(new filesystemresource(filepath));
                properties = factory.getobject();
            }
        } catch (exception e) {
            log.error("项目初始化配置错误:", e);
        }
        new springapplicationbuilder(litchidaqapplication.class).properties(properties).run(args);
    }
}

项目模拟外部文件读取

springboot如何使用外部yml启动

springboot如何使用外部yml启动

java -jar启spring boot项目使用外部yml

配置方式

java -jar xx.jar --spring.config.location=application.yml路径

配置单一变量

java -jar xxx.jar --xxx=test

取值

spring的@value("${xxx}")
java -jar .\ydbanew-cases-2.4.16.1.jar -tz=asia/shanghai -filterparam=2400 -appconfigserverurl=http://172.18.12.239:8081/appconfig -appconfigservercorp=2400 --server.port=64310

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

返回顶部
顶部
网站地图