Spring2.5之Annotation学习一
一、 开始使用annotation 配置Spring 首先需要在 spring 的 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/> </ beans >
这样当 spring 加载配置文件时,发现有 <context:annotation-config/> 标签后,会帮我加载以下四个类(用于处理 annotation
1 、 AutowiredAnnotationBeanPostProcessor,
2 、 CommonAnnotationBeanPostProcessor,
3 、 PersistenceAnnotationBeanPostProcessor,
4 、 RequiredAnnotationBeanPostProcessor
二、 @Autowired 、@Qualifier
还是需要在 xml 文件中配置 bean
(一) @Autowired
位置 : 可以放在成员属性前面,也可以放在 getter 或 setter 方法前面,但是建议放在 setter 方法前面
作用: 表示该对应的成员属性可以完成自动配置功能 ( 默认是根据 byType 的 )
例如:
xmp 配置文件:
前缀部分见上面代码,以此略。。。 < bean id = "u" class = "com.wjt276.dao.impl.UserDaoImpl" > </ bean > < bean name = "userService" class = "com.wjt276.service.UserService" > </ bean >
userService public class UserService { private UserDao userDao = new UserDaoImpl(); public UserDao getUserDao() { return userDao ;} // 表示该成员属性可以自动装配 ( 默认根据类型 byType) //annotation 建议放在 setter 方法前面 @Autowired public void setUserDao(UserDao userDao) { this . userDao = userDao; } public void add(User u){ userDao .save(u); }} 说明: 这样 spring 就可以帮我们完成自动装配功能 ( 默认是根据 byType)
(二) @Qualifier
因为 @Autowired 默认是根据 byType 来自动装配注入的。当有多个相同类型的 bean 时, Spring 就会出现异常,提示找到多个符合条件的 bean ,但是不知道选择哪个 bean 来注入。
这时我们需要另外一注解来告诉 Spring 用那个 bean ,这就是 @Qualifier 注解 , @Qualifier 使用 value 参数来指定注入那个 bean
代码:
public class UserService { private UserDao userDao = new UserDaoImpl(); public UserDao getUserDao() { return userDao ; } // 表示该成员属性可以自动装配 ( 默认根据类型 byType) // 当配置文件中有多个相同类型的 bean 时,需要使用 @Qualifier 注解来说明那个 bean 来自动装配 @Autowired public void setUserDao( @Qualifier(value="u") UserDao userDao) { this . userDao = userDao; } public void add(User u){ userDao .save(u);} }