今天做了个spring练习,发现如下问题:
spring从beans.xml文件中读取实例,对类实例化时,需要用到该类的构造函数初始化该类,但是spring貌似对有参构造函数不感兴趣,仅对无参构造函数有用,
// public GreetInterImpl(){
//
// }
public GreetInterImpl(String greetString) {
super();
this.greetString = greetString;
}将上面那个无参构造函数注释掉的话,会报Error creating bean with name 'greetInter' defined
原因是GreetInterImpl类 No default constructor found 没有构造函数我想问的是,为什么下面那个构造函数,spring就不识别呢。
spring从beans.xml文件中读取实例,对类实例化时,需要用到该类的构造函数初始化该类,但是spring貌似对有参构造函数不感兴趣,仅对无参构造函数有用,
// public GreetInterImpl(){
//
// }
public GreetInterImpl(String greetString) {
super();
this.greetString = greetString;
}将上面那个无参构造函数注释掉的话,会报Error creating bean with name 'greetInter' defined
原因是GreetInterImpl类 No default constructor found 没有构造函数我想问的是,为什么下面那个构造函数,spring就不识别呢。
this.greetString = greetString;
}
public GreetInterImpl(String greetString) {
this.greetString = greetString;
}这两个方法不是 setter和构造函数注入方式么 ,我两个方法都有啊
简单的说
就是需要
<constructor-tag>
</constructor-tag>标签,对吧。
<constructor-arg name="" value="">
<constructor-arg name="" value="">
</bean>
不过建议你,还是用getter,setter方法来注入