一、required a single bean, but 2 were found
原因:自动注入需要一个,系统通过扫描发现两个或两个上;如下所示
@Autowired DataService dataService;
@Repository public class AsDataService implements DataService{ }
@Repository public class BsDataService implements DataService{ }
修复方法:
1、增加@Primary注解
在其中一个自动注入的bean上标注@Primary不推荐,自动注入会导入BsDataService ;
@Repository @Primary public class BsDataService implements DataService{ }
2、 按照名字精确匹配
@Autowired DataService bsDataService; @Autowired DataService asDataService;
3、使用@Qualifier指定名称
@Autowired() @Qualifier("asDataService") DataService dataService;
二、内部类注入写法
public class ShopController { @Repository public static class DataServiceImpl implements DataService{ @Override public void deleteStudent(int id) { } } }
@Autowired @Qualifier("shopController.dataServiceImpl ") DataService dataServiceImpl;