【发布时间】:2020-12-02 10:27:21
【问题描述】:
我有一个带有 lombok @RequiredArgsConstructor 的课程:
@RequiredArgsConstructor
@Service
public class Test{
private final String str;
private String str5;
// more code
}
在非弹簧启动中,我们在 xml 中提供:
<bean id="Test" class="com.abc.Test">
<constructor-arg index="0" value="${xyz}"/>
</bean>
如何通过 spring boot 实现相同的功能可能是通过 application.properties 但如何注入
【问题讨论】:
-
这有帮助吗? stackoverflow.com/questions/37671467/… 并且如果您想在 spring 上下文中注入已经可用的 bean,例如任何使它们成为最终版本的存储库都会注入它们。
private final SomeRepository repository -
在这种情况下,它不会编译。在我的情况下,它给出的错误是:com.abc.Test 中的构造函数的参数 0 需要一个找不到的“java.lang.String”类型的 bean
-
您是否将 String 变量注释为 @NonNull ?
-
不要为此添加 Lombok。它期待一个字符串 bean,而不是从属性注入的值。在构造函数参数上使用
@Value("${xyz"})。您可以使用lombok,但是将注释应用于构造函数会变得非常混乱。请参阅onConstructor文档,
标签: java spring-boot lombok constructor-injection