@Autowired和@Resource的区别
Posted c-h-y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@Autowired和@Resource的区别相关的知识,希望对你有一定的参考价值。
都知道这两个注解可以实现bean的注入
@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); } }
实例简单明了,一看就懂
小白入手。。。
以上是关于@Autowired和@Resource的区别的主要内容,如果未能解决你的问题,请参考以下文章
Spring中@Autowired注解@Resource注解的区别
@Resource@Autowired@Qualifier的注解注入及区别