在 @Builder Class 中添加可配置变量
Add a Configurable Variable in a @Builder Class
我有一个@Builder class 并且其中使用的变量之一 class 需要是可配置的。我试过了
@Value("${string.propertiesFile}")
private String stringValue;
我将 application.properties 文件中定义的值插入我的 stringValue
变量。但是,stringValue
始终为空。
如何将文字值注入我的@Builder Class?
非常感谢!
据我所知,要使 @Value
注释起作用,spring 需要控制 bean 创建过程,以便它可以注入值。 @Value
可用于将值注入到 Spring 管理的 bean 中的字段,它可以应用于字段或 constructor/method 参数级别。当使用 lombok @Builder
注释时,您实际上是在实现构建器模式。因此 spring 无法控制 bean 的创建,因此您不能将值直接注入到 class 中。
相反,您可以做的是使用 @Value
在您使用的另一个 spring 管理的 class 中注入值这个构建器并可能将值传递给构建器,如:
@Service
public SomeServiceClassImpl {
@Value("${string.propertiesFile}")
private String stringValue;
public void someMethod() {
BuilderPatternClass testBuilderPatternClass = BuilderPatternClass.builder()
.name(stringValue)
.id(1)
.build();
}
}
我有一个@Builder class 并且其中使用的变量之一 class 需要是可配置的。我试过了
@Value("${string.propertiesFile}")
private String stringValue;
我将 application.properties 文件中定义的值插入我的 stringValue
变量。但是,stringValue
始终为空。
如何将文字值注入我的@Builder Class?
非常感谢!
据我所知,要使 @Value
注释起作用,spring 需要控制 bean 创建过程,以便它可以注入值。 @Value
可用于将值注入到 Spring 管理的 bean 中的字段,它可以应用于字段或 constructor/method 参数级别。当使用 lombok @Builder
注释时,您实际上是在实现构建器模式。因此 spring 无法控制 bean 的创建,因此您不能将值直接注入到 class 中。
相反,您可以做的是使用 @Value
在您使用的另一个 spring 管理的 class 中注入值这个构建器并可能将值传递给构建器,如:
@Service
public SomeServiceClassImpl {
@Value("${string.propertiesFile}")
private String stringValue;
public void someMethod() {
BuilderPatternClass testBuilderPatternClass = BuilderPatternClass.builder()
.name(stringValue)
.id(1)
.build();
}
}