首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring2.5之Annotation学习一

2012-09-13 
Spring2.5之Annotation学习1一、??开始使用annotation配置Spring首先需要在spring的xml配置文件中加入下列

Spring2.5之Annotation学习1
一、??开始使用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

还是需要在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 >   
?

?

userServicepublic 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);}} 
?

?

?

?

?

热点排行