@Autowired 这个是spring的注解
org.springframework.beans.factory.annotation.Autowired
@Resource 这个是java自带的注解
javax.annotation.Resource
@Autowired默认是按照类型来注入的,需要按名字注入的话可以跟@Qualifier搭配使用
@Resource是按照里面的name属性来注入的
针对于面向接口编程的话,一个接口一个实现类是没啥区分性的。
倘若两个实现类,你不指定的话,会报这个错
org.springframework.beans.factory.BeanCreationException bean创建失败
expected single matching bean but found 2: personServiceImpl1,personServiceImpl2
可以写一个实例 一个service接口,两个serviceImpl实现类
public interface PersonService {public List<Person> listPerson();
}
@Service
public class PersonServiceImpl1 implements PersonService{
@Autowired
private PersonMapper mapper;
public List<Person> listPerson() {
System.out.println("PersonServiceImpl1.java");
return mapper.listPerson();
}
}
@Service
public class PersonServiceImpl2 implements PersonService{
@Autowired
private PersonMapper mapper;
public List<Person> listPerson() {
System.out.println("PersonServiceImpl2.java");
return mapper.listPerson();
}
}
controller层来进行注入调用
@Controller
public class PersonController {
@Autowired
@Qualifier("personServiceImpl1")
private PersonService service;
@Resource(name="personServiceImpl2")
private PersonService service2;
@RequestMapping("listPerson")
@ResponseBody
public void listPerson(){
List<Person> list = service.listPerson();
System.out.println(list);
}
@RequestMapping("listPerson2")
@ResponseBody
public void listPerson2(){
List<Person> list = service2.listPerson();
System.out.println(list);
}
}