Spring自动装配
来源:互联网 发布:m1005找不到扫描软件 编辑:程序博客网 时间:2024/06/05 18:30
Spring的 xml配置文件中,通过将一个bean注入装配到另一个bean来实现类的耦合。
如果不使用自动装配,则方法为
< bean name="" ref="" />
<span style="font-family:FangSong_GB2312;font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"> <bean id="userDAO" class="com.vin.dao.impl.UserDAOImpl"> <property name="id" value="1" /> </bean> <bean id="userService" class="com.vin.service.UserService" scope="prototype" > <property name="userDAO" ref="userDAO" /> </bean></span></span></span>
如上例,将userDAO的bean注入到了userService的bean,通过ref属性指定,ref的值必须与被注入的bean的id相同。
如果使用autowire,有两种方式:
1. xml配置文件中,在<bean>标签中加入autowire属性,值为“byType”或“byName”,此时无需ref注入。
<span style="font-family:FangSong_GB2312;font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><bean id="userDAO" class="com.vin.dao.impl.UserDAOImpl"> <property name="id" value="1" /> </bean> <bean id="userService" class="com.vin.service.UserService" scope="prototype" autowire="byName"> </bean></span></span></span>
如上例,系统按名称扫描属性userDAO,如果扫描到userDAO,则自动装配它对应的类。如果是“byType”,则按类型扫描。
2. Annotation
2.1 Autowire按类型对应注入
在bean标签对应的类文件中,在被注入的属性的setter方法上写上注解@Autowired,则系统将从spring容器中自动扫描与setter函数的参数对应类型的bean。
<span style="font-family:FangSong_GB2312;font-size:18px;"><span style="font-size:18px;">@Autowiredpublic void setUserDAO(UserDAO userDAO) {this.userDAO = userDAO;}</span></span>
如上例,系统从spring容器中自动扫描类型为UserDAO类型的bean,注入UserService的userDAO属性的setter方法中,因此完成了自动装配。
2.2 Qualifier指定name
上面提到,autowire自动装配注入是按类型来对应bean和setter函数的参数的。
纳闷问题来了,如果有两个bean,他们是同样的类型,那么他们与setter函数的参数就无法对应,系统报错。
此时应使用@Qualifier(name)来指定名称(即bean的id)来指定装配哪一个bean。
<span style="font-family:FangSong_GB2312;font-size:18px;"><span style="white-space:pre"></span>@Autowiredpublic void setUserDAO(@Qualifier("userDAO2") UserDAO userDAO) {this.userDAO = userDAO;}</span>
3. Resource
也可以不使用spring包的autowire,而使用javaEE的resource,同样是加在setter方法上。默认为匹配名称。
@Resource(name="userDAO2")public void setUserDAO(UserDAO userDAO) {this.userDAO = userDAO;}
- Spring Bean装配-自动装配
- Spring Autowire自动装配
- 了解Spring自动装配
- spring 自动装配
- 【Spring】自动装配
- Spring Autowire自动装配
- Spring Autowire自动装配
- SPRING的自动装配
- spring的自动装配
- spring自动装配
- spring的自动装配
- Spring的自动装配
- spring自动装配
- Spring Autowire自动装配
- spring的自动装配
- Spring中自动装配
- Spring自动装配
- Spring中自动装配
- Android 屏幕旋转的处理
- CUICatalog: Invalid asset name supplied:
- Sempahore
- 杂谈
- iOS app 性能优化
- Spring自动装配
- 通信原理中的几个重要概念
- sybase jdbc 创建临时表
- Layer2-多层交换原理
- 解决Node.js 不识别express等模块
- ProtocolBuffer for Objective-C 运行环境配置及使用
- 用char数组模拟STL之string
- Intellij IDEA 提交代码到远程GitHub仓库
- enter键触发查询 通用代码