spring注入之使用标签 @Autowired @Qualifier
使用标签的缺点在于必须要有源码(因为标签必须放在源码上),当我们并没有程序源码的时候,我们只有使用xml进行配置。
例如我们在xml中配置某个类的属性
- <bean name="studentService"class="com.bjsxt.service.StudentService">
- <property name="studentDao"ref="stuDaoImpl"></property><!-- 普通值用value 对于特定的类的对象则用ref需要注意的是 ref需要在xml文件中进行配置-->
- </bean>
(1)Xml配置(添加了加下划线部分)
<?xml version="1.0"encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:annotation-config /><!-- 自动装配一定要加上此片段--> <bean name="s"class="com.bjsxt.dao.impl.StudentDaoImpl"></bean> <bean name="student"class="com.bjsxt.model.Student" scope="singleton" lazy-init="true"init-method="init" destroy-method="destroy"></bean> <!-- prototype 每次生成的对象不同 prototype lazy-init=false 默认在容器进行初始化的时候就初始化了该对象 --> <bean name="studentService"class="com.bjsxt.service.StudentService"> </bean> </beans>
(2)类 注意在这里的两种装配方式 第一种因为破坏了封装性不建议 spring容器在进行查找时,是按照xml进行查找
packagecom.bjsxt.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; importcom.bjsxt.dao.*; import com.bjsxt.dao.impl.*; importcom.bjsxt.model.*; public class StudentService { /*@Autowired //按照类型进行匹配 @Qualifier("s")按照名称进行匹配 第一种表示方式放在属性名的前面 */ privateStudentDao studentDao; //降低了耦合性:StudentService并不知道具体由谁来保存学生s 由ioc容器来控制装配 publicStudentDao getStudentDao() { return studentDao; } @Autowired//放到set方法上 public void setStudentDao( @Qualifier("s")StudentDao studentDao) { this.studentDao = studentDao; } public void add(Student s) { this.studentDao.StudentSave(s); } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。