假设我有一个需要配置的核心库,因此提供了这样的配置类:
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,所以我不知道它是否真正起作用?或最佳做法是什么?