1.出现问题
在使用spring框架中service依赖dao 重载了默认的构造方法。重载之后 默认的构造方法就会被覆盖。
public class PersionDao {
private String personName = "person222";
public PersionDao(String personName) {
this.personName = personName;
}
}
然后运行就出现了以下错误。
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.lang.String' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
2.问题分析
可以看到提示显示的是没有找到NoSuchBeanDefinition 原因是springioc容器加载bean默认使用无参构造进行初始化。
而Spring实例化bean有四种方式
1.无参构造方法实例化(Spring默认,常用,需要bean类中存在无参构造方法);
2.静态工厂实例化
3.实例化工厂实例化
4.注解方式实例化
3.问题解决
加一个默认的构造方法就可以了。
参考文章