将@PropertySource添加到从属JAR中的嵌套配置类

时间:2019-01-30 11:47:30

标签: spring-boot configuration configuration-files

假设我有一个需要配置的核心库,因此提供了这样的配置类:

package com.sjngm.core.config.properties;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "hefty", ignoreUnknownFields = false)
public class HeftyConfig {
  ...
}

在这一点上,我想向类中添加@PropertySource很不好,因为我希望允许实际项目将属性存储在所需的位置。

所以现在我想在我的实际项目中使用上述核心库作为依赖项。此时,我确实想指定一个@PropertySource。我该怎么办?

我的意思是,如果我要在此处编写该配置类,它将像这样:

package com.sjngm.actual.config.properties;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component
@PropertySource(ignoreResourceNotFound = true, value = {
    "classpath:/config/default/hefty.properties",
    "classpath:/config/${spring.profiles.active}/hefty.properties",
    "file:/opt/project/path/hefty.properties"
})
@ConfigurationProperties(prefix = "hefty", ignoreUnknownFields = false)
public class HeftyConfig {
  ...
}

显然唯一的区别是@PropertySource注释。

在Spring解析属性文件之前,我可以通过代码以某种方式将注释应用于核心类吗?还是我应该使用一个子类来执行此操作,因为它只有两个HeftyConfig-bean,所以我不知道它是否真正起作用?或最佳做法是什么?

0 个答案:

没有答案