【问题标题】:How to Access Spring Configuration Outside a JAR File如何在 JAR 文件之外访问 Spring 配置
【发布时间】:2017-01-22 08:26:17
【问题描述】:

我是 Spring Boot Development 的新手,目前无法继续讨论如何在 jar 文件之外加载我的 Spring 应用程序配置。

我现有的代码如下所示

private ApplicationContext context;

public static void main(String[] args){
    SpringApplication.run(SMPPEngine.c1ass);
    new SMPPEngine();
}

public SMPPEngine(){
    loadConfiguration();
    process();
}

private void loadConfiguration(){
    context = new ClassPatthlApplicationContext(”application-context.xm1”);
}

我想要实现的是将 jar 文件放在 application-context.xml 旁边的一个目录中,这样当有配置更改时,我不需要重新编译代码来反映 application-context 上的更改.xml。

根据我在互联网上阅读的内容,这可以通过使用“file://directory/application.xml”而不是类路径来实现。但是我使用后者的问题是,当您将jar和文件放到其他位置时,我需要进行代码更改以反映新目录,这并不能解决摆脱代码重新编译的问题。

我希望我把我的问题说清楚了,并立即得到你们的答复 :) 在此先感谢:)

【问题讨论】:

    标签: spring spring-boot


    【解决方案1】:

    有很多方法可以做到这一点,标准,您可以使用 spring file: 前缀来访问文件系统路径。

    但是使用 spring boot,您可以在 application.properties 中指定它

    spring.config.locationpropertiy,或者你可以在运行 spring boot jar 文件时在命令行中添加它,比如 java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

    但是对于您的代码,实际上您不需要从配置文件中重新创建 spring 上下文,但是您想要获取上下文实例,您只需要注入它即可

    @Autowired
    private ApplicationContext context;
    

    【讨论】:

      【解决方案2】:

      另一种方法,如果你有基础设施的话。将使用Spring Cloud Config。在您的 Boot 应用程序配置为从中读取之后,可以随时修改它们而无需重新编译或重新启动。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-15
        • 2014-07-25
        • 1970-01-01
        • 1970-01-01
        • 2018-11-11
        • 1970-01-01
        • 2018-04-22
        • 2019-05-21
        相关资源
        最近更新 更多