Spring 3.0 注解注入详解_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、spring 3.0 注解注入详解1.autowir注解(不推举用法,建议用法resource) autowired可以对成员变量、办法和构造函数举行标注,来完成自动装配的工作。autowired的标注位置不同,它们都会在spring在初始化这个bean时,自动装配这个属性。要使autowired能够工作,还需要在配置文件中加入以下 xml代码 bean / 2. qualifier注解 autowired是按照类型举行自动装配的。例如,假如当spring上下文中存在不止一个userdao类型的bean时,就会抛出beancreationexception异样;假如spring上下文中不存在u

2、serdao类型的bean,也会抛出beancreationexception异样。我们可以用法qualifier协作autowired来解决这些问题。如下: 1). 可能存在多个userdao实例 java代码 autowired qualifier("userserviceimpl") public iuserservice userservice; 或者 java代码 autowired public vo userdao(qualifier("userdao") userdao userdao) this.userdao = userdao; 这

3、样,spring会找到id为userserviceimpl和userdao的bean举行装配。 2). 可能不存在userdao实例 java代码 autowired(required = fae) public iuserservice userservice; 3. resource注解 jsr-250标准注解,推举用法它来代替spring专有的autowired注解。resource的作用相当于autowired,只不过autowired按bytype自动注入,而resource默认按byname自动注入罢了。resource有两个属性是比较重要的,分离是name和type,spring

4、将 resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以假如用法name属性,则用法byname的自动注入策略,而用法type属性时则用法bytype自动注入策略。假如既不指定name也不指定type属性,这时将通过反射机制用法byname自动注入策略。要使autowired能够工作,还需要在配置文件中加入以下: xml代码 bean class="org.springframework.contt.annotation.commonannotationbeanpostprocessor" / resource装配挨次: a.假

5、如同时指定了name和type,则从spring上下文中找到唯一匹配的bean举行装配,找不到则抛出异样 b.假如指定了name,则从上下文中查找名称(id)匹配的bean举行装配,找不到则抛出异样 c.假如指定了type,则从上下文中找到类型匹配的唯一bean举行装配,找不到或者找到多个,都会抛出异样 d.假如既没有指定name,又没有指定type,则自动根据byname方式举行装配(见2);假如没有匹配,则回退为一个原始类型(userdao)举行匹配,假如匹配则自动装配; 4. postconsuct(jsr-250)注解 在办法上加上注解postconstruct,这个办法就会在bean

6、初始化之后被spring容器执行(注:bean初始化包括,实例化bean,并装配bean的属性(依靠注入)。它的一个典型的应用场景是,当你需要往bean里注入一个其父类中定义的属性,而你又无法复写父类的属性或属性的setter办法时,如: java代码 public class userdaoimpl extends hibernatedaosupport implements userdao private sessionfactory mysessionfacotry; resource public void setmysessionfacotry(sessionfactory sess

7、ionfacotry) this.mysessionfacotry = sessionfacotry; postconstruct public void injectsessionfactory() per.setsessionfactory(mysessionfacotry); 这里通过postconstruct,为userdaoimpl的父类里定义的一个sessionfactory私有属性,注入了我们自己定义的 sessionfactory(父类的setsessionfactory办法为final,不行复写),之后我们就可以通过调用 super.getsessionfactory()来拜

8、访该属性了。 5. predestroy(jsr-250)注解 在办法上加上注解predestroy,这个办法就会在bean初始化之后被spring容器执行。其使用同postconstruct。和postconstruct 区分在于:postconstruct注释的办法将在类实例化后调用,而标注了 predestroy 的办法将在类销毁之前调用。 6. component注解 (不推举用法) 只需要在对应的类上加上一个component注解,就将该类定义为一个bean了。spring还提供了越发细化的注解形式:repository、service、controller,它们分离对应存储层bean,业务层bean,和展示层bean。目前版本(2.5)中,这些注解与component的语义是一样的,彻低通用,在spring以后的版本中可能会给它们追加更多的语义。所以,我们推举用法repository、service、controller来替代component。 7.scope

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论