spring - 在 @Builder 类中添加可配置变量
问题描述
我有一个 @Builder 类,并且该类中使用的变量之一需要是可配置的。我试过了
@Value("${string.propertiesFile}")
private String stringValue;
我将在 application.properties 文件中定义的值插入到我的stringValue
变量中。但是,stringValue
始终为空。如何将文字值添加到我的 @Builder 类中?
非常感谢!
解决方案
据我了解,@Value
要使注释起作用,spring 需要控制 bean 创建过程,以便它可以注入 value 。@Value
可用于将值注入 Spring 管理的 bean 中的字段,并且可以在字段或构造函数/方法参数级别应用。使用 lombok@Builder
注释时,您实际上是在实现构建器模式。因此 spring 无法控制 bean 创建,因此您不能将值直接注入到您的类中。
相反,您可以做的是@Value
在另一个弹簧管理的类中使用该构建器注入的值,并可能将值传递给构建器,例如:
@Service
public SomeServiceClassImpl {
@Value("${string.propertiesFile}")
private String stringValue;
public void someMethod() {
BuilderPatternClass testBuilderPatternClass = BuilderPatternClass.builder()
.name(stringValue)
.id(1)
.build();
}
}
推荐阅读
- npm - npm WARN 已弃用 core-js@2.6.11
- python - 调用另一个模块时显示原始模块的名称
- csv - Dart:如何将 CSV 数据映射到模型列表?
- node.js - 将异步函数返回值分配给 Node.JS 中的变量
- android - 有没有人在 Kotlin 中使用 notifyDataSetChanged() ?
- java - 动态类加载(java 11)
- reactjs - React Indiana 拖动滚动组件干扰 Ant Design 弹出框
- batch-file - 如何运行批处理文件来运行 python-fu gimp 脚本?
- arcgis-js-api - Maximo 地图识别工具:添加超链接?
- menu - 可能的侧边栏点击事件冲突