1.1. 使用注解以前我们是怎样注入属性的
类的实现:
public class UserManagerImpl implements UserManager {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
...
}
配置文件:
< bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl">
< property name="userDao" ref="userDao" />
< /bean>
< bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl">
< property name="sessionFactory" ref="mySessionFactory" />
< /bean>
1.2. 引入@Autowired注解(不推荐使用,建议使用@Resource)
类的实现(对成员变量进行标注)
public class UserManagerImpl implements UserManager {
@Autowired
private UserDao userDao;
...
}
或者(对方法进行标注)
public class UserManagerImpl implements UserManager {
private UserDao userDao;
@Autowired
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
...
}
配置文件
< bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl" />
< bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl">
< property name="sessionFactory" ref="mySessionFactory" />
< /bean>
@Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。以上两种不同实现方式中,@Autowired的标注位置不同,它们都会在Spring在初始化userManagerImpl这个bean时,自动装配userDao这个属性,区别是:第一种实现中,Spring会直接将UserDao类型的唯一一个bean赋值给userDao这个成员变量;第二种实现中,Spring会调用 setUserDao方法来将UserDao类型的唯一一个bean装配到userDao这个属性。
1.3. 让@Autowired工作起来
要使@Autowired能够工作,还需要在配置文件中加入以下代码
< bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />