我有一个 Spring 组件,我在其中注入了依赖项(其他组件),但我无法在构造函数中使用这些注入的依赖项,因为它们是null
在构造函数调用时使用的。有没有办法在构造函数中使用这些依赖项?
@Component
@RequestScope
public class MyComponent {
@Inject
OtherComponent1 otherComponent1
@Inject
OtherComponent2 otherComponent2
MyComponent() {
otherComponent1.someMethod(); // null
otherComponent2.someMethod(); // null
}
}
Spring 中有两种注入方法:属性注入(如您所用)和构造函数注入。对于属性注入,Spring bean 工厂将首先使用其默认构造函数(
MyComponent
)创建您的 bean(这就是为什么您需要@Component
注释类的默认构造函数),然后 Spring 框架将在它们完全构造后(注入所有依赖项)注入OtherComponent1
和。因此,当调用 时,属性和只是初始化为 的普通属性。要使用这些依赖项,您应该使用构造函数注入。代码如下:OtherComponent2
MyComponent()
otherComponent1
otherComponent2
null