同时执行 setter 和构造函数注入
Performing both setter and constructor injection
我是 spring 框架的新手。我尝试使用两种注入方法(Setter 和构造函数)注入依赖项。我期待在 setter 注入中定义的输出,因为它被构造函数注入覆盖了。但是,我收到了类似
的错误消息
Bean creation exception:No default constructor found
如果我们同时应用这两种注入方式,会不会报错?
I tried to inject dependency with both the injection methods(Setter
and constructor).
你应该可以做到。根据 Spring 版本,结果可能会有所不同,但我可以确认它适用于 Spring 5 版本。
你的错误:
Bean creation exception:No default constructor found.
认为带有参数的构造函数不被 Spring 视为自动装配 bean 的一种方式。
在旧的 Spring 版本中(3 和更少,也许 4 我不记得了),你必须在构造函数中指定 @Autowired
以使 Spring 知道它。
所以你应该声明:
@Autowired
public void setMyDep(MyDep myDep) {
this.myDep = myDep;
}
@Autowired
public FooBean(MyOtherDep myOtherDep) {
this.myOtherDep = myOtherDep;
}
在最近的 Spring 版本中,不再需要声明 @Autowired
:
@Autowired
public void setMyDep(MyDep myDep) {
this.myDep = myDep;
}
public FooBean(MyOtherDep myOtherDep) {
this.myOtherDep = myOtherDep;
}
我是 spring 框架的新手。我尝试使用两种注入方法(Setter 和构造函数)注入依赖项。我期待在 setter 注入中定义的输出,因为它被构造函数注入覆盖了。但是,我收到了类似
的错误消息Bean creation exception:No default constructor found
如果我们同时应用这两种注入方式,会不会报错?
I tried to inject dependency with both the injection methods(Setter and constructor).
你应该可以做到。根据 Spring 版本,结果可能会有所不同,但我可以确认它适用于 Spring 5 版本。
你的错误:
Bean creation exception:No default constructor found.
认为带有参数的构造函数不被 Spring 视为自动装配 bean 的一种方式。
在旧的 Spring 版本中(3 和更少,也许 4 我不记得了),你必须在构造函数中指定 @Autowired
以使 Spring 知道它。
所以你应该声明:
@Autowired
public void setMyDep(MyDep myDep) {
this.myDep = myDep;
}
@Autowired
public FooBean(MyOtherDep myOtherDep) {
this.myOtherDep = myOtherDep;
}
在最近的 Spring 版本中,不再需要声明 @Autowired
:
@Autowired
public void setMyDep(MyDep myDep) {
this.myDep = myDep;
}
public FooBean(MyOtherDep myOtherDep) {
this.myOtherDep = myOtherDep;
}