Spring @autowire用法

来源:互联网 发布:车祸数据 编辑:程序博客网 时间:2024/06/06 04:15
在传统的spring注入方式中,我们对类变量都要求实现get与set的方法。在pring 2.5 引入了 @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。不过在引及@Autowired注释后,要在spring的配置文件 applicationContext.xml中加入:如下代码,
  1. <!-- 该 BeanPostProcessor 将自动对标注 @Autowired 的 Bean 进行注入 -->     
  2.   <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

使用@Autowired的,那么在xml文件中,也不需要配置该类中的成员变量了。如下代码是没有使用@Autowired的注解

  1. <?xml version="1.0" encoding="UTF-8" ?>     
  2. <beans xmlns="http://www.springframework.org/schema/beans"    
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans      
  5. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">     
  6.     <bean id="boss" class="com.baobaotao.Boss">     
  7.         <property name="car" ref="car"/>     
  8.         <property name="office" ref="office" />     
  9.     </bean>     
  10.     <bean id="office" class="com.baobaotao.Office">     
  11.         <property name="officeNo" value="002"/>     
  12.     </bean>     
  13.     <bean id="car" class="com.baobaotao.Car" scope="singleton">     
  14.         <property name="brand" value=" 红旗 CA72"/>     
  15.         <property name="price" value="2000"/>     
  16.     </bean>     
  17. </beans>   

在上面的代码中boss中要注入两个类成员变量

如果是在代码中在car与office头上写@Autowire,那么这时xml中的文件就变成如下

  • <beans xmlns="http://www.springframework.org/schema/beans"    
  •     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  •     xsi:schemaLocation="http://www.springframework.org/schema/beans      
  • http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">     
  •     
  •     <!-- 该 BeanPostProcessor 将自动起作用,对标注 @Autowired 的 Bean 进行自动注入 -->     
  •     <bean class="org.springframework.beans.factory.annotation.     
  •         AutowiredAnnotationBeanPostProcessor"/>     
  •     
  •     <!-- 移除 boss Bean 的属性注入配置的信息 -->     
  •     <bean id="boss" class="com.baobaotao.Boss"/>     
  •       
  •     <bean id="office" class="com.baobaotao.Office">     
  •         <property name="officeNo" value="001"/>     
  •     </bean>     
  •     <bean id="car" class="com.baobaotao.Car" scope="singleton">     
  •         <property name="brand" value=" 红旗 CA72"/>     
  •         <property name="price" value="2000"/>     
  •     </bean>     
  • </beans>   

    这时Boss中就无需引用类成员变量,@Autowire会根据名称自动的对其注入


  • 0 0