首页 > 解决方案 > 在 @Builder 类中添加可配置变量

问题描述

我有一个 @Builder 类,并且该类中使用的变量之一需要是可配置的。我试过了

@Value("${string.propertiesFile}")  
private String stringValue;

我将在 application.properties 文件中定义的值插入到我的stringValue变量中。但是,stringValue始终为空。如何将文字值添加到我的 @Builder 类中?

非常感谢!

标签: springlombok

解决方案


据我了解,@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();
  }

}

推荐阅读