我正在SpringBoot中开发一个微服务,我有一个公共配置类,其中存储了从application.properties文件获得的所有配置变量。它看起来像这样:
配置.java
package programming
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Configuration
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CommonConfiguration {
@Value("${user-pool.id}")
private String userPoolId;
@Value("${client.id}")
private String clientId;
...
...
...
}
然后,每当我在其他类中需要这些变量时,我都会自动连接config.java类,并像这样使用它:
@Autowired
private Config config;
public void method1() {
...
String key = items.get(config.getClientId()).toString();
}
在spring boot中,使用一个公共配置类来存储所有的自动连接变量,并在需要时在其他类中使用这些变量,这是一个好的做法吗?如果不是,那最好的办法是什么?任何帮助都将不胜感激。谢谢您!
2条答案
按热度按时间9rbhqvlz1#
在spring boot中,使用一个公共配置类来存储所有的自动连接变量,并在需要时在其他类中使用这些变量,这是一个好的做法吗?如果不是,那最好的办法是什么?任何帮助都将不胜感激。
我的回答是:绝对不!
您为所有需要配置的类引入了一个真正的类依赖关系。有了它,您实际上正在反转spring提供的配置注入。
关键是能够直接在目标类的字段中只注入所需的特定配置部分(例如,通过使用@value(“${foo.bar}”私有字符串foobar;))
因此,您还禁用了特定功能的使用(例如,在不同的类中使用@profile的不同配置文件),我确信还有更多的示例表明您实际上限制了灵活性。
我看不出你的方法有什么好处——你不妨解释一下为什么你需要:)
kmbjn2e32#
更好的办法是这样做
在application.properties中,现在可以键入
你可以在任何你需要的地方使用我的汽车
编辑将以下依赖项添加到maven也很好,它会生成一个helper文件,以便您的想法能够识别已定义的属性
除了在评论中重播这个问题之外,你可以把前缀留空,只需要用@configurationproperties注解你的类如果你不想有一个通用键子键可以很容易地用子类处理我将在这里发布我的一个项目的例子
示例应用程序.yml