Spring容器的依赖注入方式(二)
如果通过配置beans.xml的方式对属性进行注入,需要编写大量的xml代码,造成了配置文件的臃肿,为了解决这个问题,spring提供了在JAVA代码中通过注解的方式来对属性进行装配。
?
方法三:通过注解方式对属性进行注入
?? 第一步:要使用注解方式进行装备,首先需要修改beans.xml文件,让spring打开注解功能:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<!-- 引入 context 命名空间 -->xmlns:context = "http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd<!-- 加入 context scheme文件 -->http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 打开注解功能 --> <context:annotation-config/> ......</beans>
?第二步:依然是将需要交给Spring管理的类配置到beans.xml文件中
<bean name="personDao" name="code">public class PersonServiceBean implements PersonService {//1.name属性指定spring容器中管理的bean的名称(如果指定了name属性,则如果spring容器会只按照name属性指定的bean名称来进行装配//2.如果不指定name属性,那么容器会首先会按照属性的名称在spring容器中查找bean类进行装配,如果找不到bean类则再按照属性的类型进行装配@Resource(name="personDao")private PersonDao personDao;//用注解方式则不需要提供属性的set方法了//public void setPersonDao(PersonDao personDao){//this.personDao = personDao;//}}?
??? 也可以将注解用到set方法上
public class PersonServiceBean implements PersonService {private PersonDao personDao;@Resource(name="personDao")public void setPersonDao(PersonDao personDao){this.personDao = personDao;}}
?
2. @Aotuwire 该注解是有spring提供的一个注解类型,默认情况下(不配置@Qualifier注解)它会按类型来装配属性
public class PersonServiceBean implements PersonService { //如果指定了required值为true,则如果找不到合适的bean进行装配,则会抛出异常,如果值为false,则找不到bean装配会将属性值装配为null@Autowired(required=true) //不指定@Qualifier注解时,默认按照属性类型进行装配//在指定了@Qualifier后,则只会按照@Qualifier指定的名称进行装配@Qualifier("personDao")private PersonDao personDao;}
? 同样也可以将注解写在set方法上
public class PersonServiceBean implements PersonService {private PersonDao personDao;@Autowired@Qualifier("personDao")public void setPersonDao(PersonDao personDao){this.personDao = personDao;}}
?