spring @Autowire 的注解默认是按类型注入bean,比如下面这个类
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
@Repository
public class FloorGenerator {
@Autowired
private DataSource floorGenDataSource;
@Autowired
private TopicDao topicDao;
@Autowired
private TopicXDB topicXDB;
//some method here...
}
floorGenDataSource是DataSource类型,在注入floorGenDataSource的时候,如果相同类型的DataSource已经注入很多个 bean,这时候报会异常:
No unique bean of type [com.a.b.BaseDao] is defined: expected single matching bean but found 2: [dataSource, userDataSource]
意思是按类型注入的时候,有两个DataSource类型的bean,spring不知道帮你注入哪个,所以报异常。
解决方案很简单,不让按类型注入,按名称注入就可以了。
在private DataSource floorGenDataSource;上面写好@Qualifier,并注明按哪个名称的bean注入,如:
@Repository
public class FloorGenerator {
@Autowired
@Qualifier("dataSource")
private DataSource floorGenDataSource;
@Autowired
private TopicDao topicDao;
@Autowired
private TopicXDB topicXDB;
//some method here...
}
今天的文章spring @Autowire 的注解默认是按类型注入bean分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/12888.html