【问题标题】:Spring Boot, cannot read application.properties from a dependency jarSpring Boot,无法从依赖项 jar 中读取 application.properties
【发布时间】:2020-07-08 13:46:19
【问题描述】:

我有这种情况。我正在使用 Spring Boot 开发 REST 服务,并且我有一个依赖项 jar,这是我使用此方法作为依赖项包含的另一个 Spring Boot 项目:

https://docs.spring.io/spring-boot/docs/2.1.4.RELEASE/maven-plugin/examples/repackage-classifier.html

一切都完美编译,我可以从依赖 jar 中调用类。在依赖项 jar 中的代码中,我使用 @Value 注释从“父”项目的 application.properties 中读取值,但它始终返回 null。

如果我尝试从父项目中读取相同的值,它会起作用。

为了避免奇怪的双重属性文件,我删除了依赖jar中的原始application.properties文件,但没有任何变化。

关于如何解决这个问题的任何想法?

提前致谢。

【问题讨论】:

    标签: spring-boot properties annotations


    【解决方案1】:

    我能想到两个你可以尝试的选择。

    #1

    尝试将父 application.properties 包含在 @PropertySources 注释中。您可能必须确保两个应用程序之间的属性文件不同。在this answer中有更多描述。

    #2

    将父项目设置为具有可以在应用程序中注入的配置属性类,并检索必要的属性。

    父项目可能有这样的类:

    @Data // Part of the Lombok project, creates the getters/setters automatically
    @ConfigurationProperties(prefix = "application.specific.prefix")
    public class ApplicationConfig {
        private String someValue;
        private Integer importantNumber;
    }
    

    您的application.properties 如下所示:

    application.specific.prefix.some-value=Spring Boot is great!
    application.specific.prefix.important-number=42
    

    在您的 Spring 控制类中,您可以包含以下资源:

    @Autowired
    private ApplicationConfig applicationConfig;
    

    然后你可以调用你需要的属性:

    applicationConfig.getSomeValue();
    

    Baeldung has a helpful guide to @ConfigurationProperties

    【讨论】:

      【解决方案2】:

      解决了。谢谢你的回复!

      我解决了问题并在这里写下解决方案,也许它对其他人有用。

      首先,我犯了一个愚蠢的错误,我忘了把bean放在@Autowired下! :-D

      但是还有一件事要做,为了让父项目自动装配依赖bean,我们必须在父项目的Config类中使用@ComponentScan添加它的包。

      在此之后,父项目中的所有属性都正确注入到依赖bean中。

      谢谢。

      最好的问候。

      【讨论】:

        【解决方案3】:

        此问题已在 this 帖子中解决。如果您正在使用 Maven,请尝试从您的主 pom.xml 中删除 <package> 标记以使用默认值(jar),并告诉 Spring-Boot 加载和读取资源。

        更多关于 Maven 生命周期的信息参考here

        【讨论】:

          猜你喜欢
          • 2020-02-28
          • 2017-06-18
          • 2016-06-10
          • 1970-01-01
          • 1970-01-01
          • 2017-08-31
          • 2019-09-11
          • 2018-01-07
          • 2018-09-15
          相关资源
          最近更新 更多