18 @Autowired 实现根据类型实现自动装配
BookServlet
1 |
|
BookService
1 |
|
BookDao
1 |
|
XML
1 | <context:component-scan base-package="com.runsstudio" use-default-filters="true"></context:component-scan> |
调用Servlet…
调用service….
调用DAO,保存了一本图书
只需要@Autoware 然后就再也不需要new啦!
Autoware原理:
@Autowired 首先看属性的类型,比如说
1 |
|
首先找到对应组件。对应的java代码是ioc.getBean(BookService);
如果没找到,抛出No such bean exception
如果找到多个(比如说有继承关系的子类),继续找,顺序是:
成员变量名作为id继续匹配
- 匹配上?装配
- 没有匹配?报错:原因是按照变量名作为ID继续匹配的 可以使用@Qualifier(“”)指定一个新名字作为ID避免成员变量名作为id继续匹配,找不到时候的报错!