【问题标题】:How to set system variable from Spring Cloud Config Server如何从 Spring Cloud Config Server 设置系统变量
【发布时间】:2017-03-26 09:27:59
【问题描述】:

我正在寻找一种从Spring Cloud Config Server 设置系统变量(例如 -Djavax.net.ssl.keyStore)的方法,因为我在相互 ssl 环境中正面临这种行为(https://stackoverflow.com/a/30199253/1406669)。 有多种静态设置方法(https://stackoverflow.com/a/36895827/1406669 || https://gist.github.com/unamanic/a7eb0c17b78fb03617cc955b06285b1d)。
我不喜欢它的地方是静态设置(一旦在启动时设置并且从不刷新)并且需要以静态方式定义键。这样,当需要引入新的系统变量时,我将不得不重新部署应用程序。这是我尽量避免的事情。
有人有想法吗?

【问题讨论】:

    标签: java spring ssl config


    【解决方案1】:

    刷新事件通过 ApplicationChangeEvent 工作,您的应用也可以通过实现 ApplicationListener 来监听它。

    https://github.com/spring-cloud/spring-cloud-commons/blob/master/docs/src/main/asciidoc/spring-cloud-commons.adoc#environment-changes

    @Component
    public class DynamicSystemProperties implements ApplicationListener<EnvironmentChangeEvent>{
    
        private final Environment env;
    
        @Autowired
        public DynamicSystemProperties(Environment env) {
            this.env = env;
    
        }
    
        @Override
        public void onApplicationEvent(EnvironmentChangeEvent environmentChangeEvent) {
    
            if(env.containsProperty("system.javax.net.ssl.keyStore")) {
                String keystore = env.getProperty("system.javax.net.ssl.keyStore");
                System.out.println("system.javax.net.ssl.keyStore - " + keystore);
    
                System.getProperties().setProperty("javax.net.ssl.keyStore", keystore);
            }
        }
    }
    

    【讨论】:

    猜你喜欢
    • 2016-04-01
    • 2016-11-26
    • 1970-01-01
    • 2016-09-15
    • 2015-06-18
    • 2016-10-28
    • 2017-06-23
    • 2017-10-12
    • 1970-01-01
    相关资源
    最近更新 更多