我是Spring框架的新手。我试图用两种注入方法(Setter和构造函数)注入依赖项。我期待在setter注入中定义的输出,因为它被构造函数注入覆盖。但是,我收到了类似
的错误消息Bean创建例外:未找到默认构造函数
如果同时使用两种注入方法,会抛出错误吗?
答案 0 :(得分:1)
我试图用两种注入方法注入依赖项(Setter 和构造函数)。
您应该能够做到。根据Spring版本,结果可能有所不同,但是我可以确认它可以与Spring 5版本一起使用。
您的错误:
Bean创建例外:找不到默认构造函数。
认为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;
}