当前位置:文档之家› Spring中 @Autowired标签与 @Resource标签 的区别

Spring中 @Autowired标签与 @Resource标签 的区别

Spring中 @Autowired标签与 @Resource标签 的区别
Spring中 @Autowired标签与 @Resource标签 的区别

Spring不但支持自己定义的@Autowired注解,还支持由JSR-250规范定义的几个注解,如:@Resource、 @PostConstruct及@PreDestroy。

1. @Autowired

@Autowired是Spring 提供的,需导入

Package:org.springframework.beans.factory.annotation.Autowired;

只按照byType 注入。

2. @Resource

@Resource默认按byName 自动注入,是J2EE提供的,需导入Package:

javax.annotation.Resource;

@Resource有两个中重要的属性:name和type ,而Spring将@Resource注解的name 属性解析为bean的

名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName 的自动注入策略,而使用

type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用by

Name自动注入策略。

@Resource装配顺序

(1). 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常;

(2). 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常;

(3). 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常;

(4). 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一

个原始类型进行匹配,如果匹配则自动装配;

@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入。3. 使用区别

@Resource(name="loginService")

private LoginService loginService;

@Autowired(required=false)@Qualifier("loginService")

private LoginService loginService;

(1).@Autowired 与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter 方法上;

(2).@Autowired 默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设

置它的required属性为false,如:@Autowired(required=false) .

如果我们想使用名称装配可以结合 @Qualifier注解进行使用;

(3).@Resource(这个注解属于J2EE的),默认安装名称进行装配,名称可以通过name 属性进行指定,如果没

有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属

性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指

定,就只会按照名称进行装配。

推荐使用@Resource注解在字段上,这样就不用写setter方法了.并且这个注解是属于J2EE的,减少了与Spring

的耦合,这样代码看起就比较优雅。

另外,通过实践,还总结出一条规律:

如果将@requied或者@autowired写了set方法之上,则程序会走到set方法内部。

但如果写在了field之上,则不会进入set方法当中。

古书的注释

本章的重点和难点 1、了解《十三经注疏》 2、掌握古书注释的 常见术语:曰、为、谓之 谓犹之言 之为言读曰(读为) 读若(读如) 一、古注的重要性 1、古注是读懂古书的重要途径 2、古注是注释古书重要依据 3、古注能教我们注古书的方法 4、古注中包含着许多语言学理论 二、古注的发展概况 1、注释的萌芽期——先秦 先秦的注释是非系统性的,且多在古籍正文中。 《孟子离娄上》:”诗曰:?天之方蹶,无然泄泄。…泄泄,犹沓沓也。事君无义,进退无礼,言则非先王之道者,犹沓沓也。“ 2、注释的兴盛期——两汉 (1)两汉注释兴盛的原因:罢黜百家,独尊儒术 (2)两汉注释的特点:主要限于给儒家经典著作做注。 (3)两汉时期注释古书的重要书籍 《毛诗诂训传》《古文尚书注》 《毛诗笺》、《周礼注》、《仪礼注》、《礼记注》《春秋公羊解诂》 《战国策注》、《吕氏春秋注》、《淮南子注》《楚辞章句》 3、注释的发展——魏晋至隋唐 (1)魏晋至隋唐注释的特点:注释范围扩大到非儒家经典著作。唐代开始既注原文,也注前人之注。 (2)本期注释古书的重要书籍 《老子注》《庄子注》《春秋外传》《国语注》《五经正义》(《易》《书》《诗》《礼》《左》《周礼疏》、《仪礼疏》《春秋公羊传疏》《春秋谷梁传疏》《论语疏》、《孝经疏》、《尔雅疏》《孟子疏》《经典释文》《荀子注》管子注》《史记正义》《史记索隐》(《史记》三家注)《史记集解》《汉书集注》《文选注》 4、注释的中落——宋、元、明 (1)本期注释的特点:常借注释来发挥自己的政治、哲学等思想观点。 (2)本期注释古书的重要书籍 《四书集注》(《大学章句》《中庸章句》《论语集注》《孟子集注》) 《周易本义》、《诗集传》、《楚辞集注》 5、古籍整理和古注的高峰期——清朝 (1)原因: 统治者大搞文字狱,文人不敢涉及现实而把精力转向古籍。 (2)清人古注成就体现:注书范围广,注书质量高。 范围广:前人没人整理和注释的古籍,清人作了注解,前人注解过的古籍清人重新作注。质量高:注释详尽可靠,解决了古书中许多疑难问题。 三、古注的内容

springMVC详解以及注解说明

springMVC详解以及注解说明 基于注释(Annotation)的配置有越来越流行的趋势,Spring 2.5 顺应这种趋势,提供了完全基于注释配置Bean、装配Bean 的功能,您可以使用基于注释的Spring IoC 替换原来基于XML 的配置。本文通过实例详细讲述了Spring 2.5 基于注释IoC 功能的使用。 概述 注释配置相对于XML 配置具有很多的优势: ? 它可以充分利用Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用JPA 注释配置ORM 映射时,我们就不需要指定PO 的属性名、类型等信息,如果关系表字段和PO 属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过Java 反射机制获取。 ? 注释和Java 代码位于一个文件中,而XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和Java 代码放在一起,有助于增强程序的内聚性。而采用独立的XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。 因此在很多情况下,注释配置比XML 配置更受欢迎,注释配置有进一步流行的趋势。Spring 2.5 的一大增强就是引入了很多注释类,现在您已经可以使用注释配置完成大部分XML 配置的功能。在这篇文章里,我们将向您讲述使用注释进行Bean 定义和依赖注入的内容。 Spring2.5的注释 Spring 2.5 提供了AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 和RequiredAnnotationBeanPostProcessor这四个主要的关于Annotation 的BeanPostProcessor。 我们可以使用 来方便地、一次性的声明者四个BeanPostProcessor。 1.Autowired... 提供对Spring 特有的Autowired 和Qualifier 注释。

spring使用基于注解的AOP事务管理

spring使用基于注解的AOP事务管理 16.6 AOP事务管理 AOP事务管理利用了Spring AOP的基础设施,在大多数情况下,Spring AOP会创建一个JDK代理以拦截方法调用。你可以使用装载时编织以在装载期编织切面,这样就不需要代理了(如果你记不清什么是装载时编织,请参看第6章)。你有两种方式来配置Spring AOP 事务管理,基于注解的配置以及XML配置。 16.6.1 使用基于注解的AOP事务管理 你可以借助于AOP的自动代理,通过注解将事务性行为引入到现有的bean中。让我们以代码清单16-21开始吧,它展示了类DeclarativeTxBankService。 代码清单16-21 DeclarativeTxBankService实现 请注意@Transactional属性,为了让Spring的事务管理基础设施可以利用该属性创建恰当的切入点和通知,我们需要使用AOP的自动代理和注解驱动的事务支持。代码清单16-22展示了与该注解相对应的XML配置。 代码清单16-22 基于注解的事务管理的配置文件

该XML配置文件展示了标准的bankService bean声明,紧跟其后的是 标签。 标签使用@Transactional注解创建恰当的事务管理切面。接下来由通知匹配的bean。 1.探索tx:annotation-driven标签 标签是注解驱动的事务管理支持的核心。表16-3列出了 标签的所有属性。 表16-3 标签的属性 属性说明 transactionManager 指定到现有的PlatformTransaction Manager bean的引用,通知会使用该引用 mode 指定Spring事务管理框架创建通知bean的方式。 可用的值有proxy和aspectj。前者是默认值, 表示通知对象是个JDK代理;后者表示 Spring AOP会使用AspectJ创建代理 order 指定创建的切面的顺序。只要目标对象有多个通知就可以使用该属性 proxy-target-class 该属性如果为true就表示你想要代理目标类而不是bean所实现的所有接口

古书中的注解

古漢語通論(十七) 古書的注解 我國比較重要的古籍,前人大都作過注解。今天我們要想比較順利地讀懂一部古書,一般都要參看舊注。有些文字比較艱深的古書,如果不參看舊注甚至根本無法讀懂。 注解古書的工作開始於漢代。以前的許多典籍傳到漢代,由於種種原因(如語言的發展,口授和傳抄的錯誤等),漢代人已經不能完全讀懂;於是有一些人專門為這些古書做注解,像毛亨、孔安國、馬融、鄭玄等,都是著名的注解家。鄭玄對先的經書,像《周易》《毛詩》《周禮》《儀禮》《禮記》《論語》等書,都曾作過注解。這些注解對我們了解先古籍非常有用,如果沒有漢代學者這一番辛勤的工作,有許多先古籍我們今天是很難讀懂的。到了唐代,距離漢代又有六七百年了,許多漢人的注解在唐代人看起來,又不是那麼容易理解了,於是出現了一種新的注解,作者不僅解釋正文,而且還給前人的注解作注解。這種注解一般叫做“疏”,也叫“正義”。例如現在最通行的《十三經注疏》中的《詩經》就是漢毛亨傳,漢鄭玄箋,唐孔穎達等正義。毛傳、鄭箋的“傳”和“箋”,當時都各有特定的意義,“傳”指闡明經義,“箋”有補充與訂正毛傳的意思,一方面對毛傳簡略隱晦的地方加以闡明,另一方面把不同於毛傳的意見提出,使可識别。 注:《十三經注疏》大多數是漢朝人或晉人做的注,唐宋人做的疏,各部書的注疏人如下: 《周易》:王弼、韓康伯注,唐孔穎達等正義; 《尚書》:舊題漢孔安國傳,唐孔穎達等正義; 《詩經》:漢毛亨傳,漢鄭玄箋,唐孔穎達等正義; 《周禮》:漢鄭玄注,唐賈公彥疏; 《儀禮》:漢鄭玄注,唐賈公彥疏; 《禮記》:漢鄭玄注,唐孔穎達等正義; 《春秋左傳》:晉杜預注,唐孔穎達等正義; 《春秋公羊傳》:漢何休注,唐徐彥疏; 《春秋谷梁傳》:晉甯注,唐楊士勳疏; 《論語》:何晏集解,宋邢昺疏; 《孝經》:唐玄宗注,宋邢昺疏; 《爾雅》:晉郭璞注,宋邢昺疏;

基于注解的Spring AOP的配置和使用

基于注解的Spring AOP的配置和使用 AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向切面编程。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。 AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。 我们现在做的一些非业务,如:日志、事务、安全等都会写在业务代码中(也即是说,这些非业务类横切于业务类),但这些代码往往是重复,复制——粘贴式的代码会给程序的维护带来不便,AOP就实现了把这些业务需求与系统需求分开来做。这种解决的方式也称代理机制。 先来了解一下AOP的相关概念,《Spring参考手册》中定义了以下几个AOP的重要概念,结合以上代码分析如下: ?切面(Aspect):官方的抽象定义为“一个关注点的模块化,这个关注点可能会横切多个对象”,在本例中,“切面”就是类TestAspect所关注的具体行为,例如,AServiceImpl.barA()的调用就是切面TestAspect所关注的行为之一。“切面”在ApplicationContext 中来配置。 ?连接点(Joinpoint):程序执行过程中的某一行为,例如,UserService.get 的调用或者UserService.delete抛出异常等行为。 ?通知(Advice):“切面”对于某个“连接点”所产生的动作,例如,TestAspect 中对com.spring.service包下所有类的方法进行日志记录的动作就是一个Advice。其中,一个“切面”可以包含多个“Advice”,例如ServiceAspect。?切入点(Pointcut):匹配连接点的断言,在AOP中通知和一个切入点表达式关联。例如,TestAspect中的所有通知所关注的连接点,都由切入点表达式execution(* com.spring.service.*.*(..))来决定。 ?目标对象(Target Object):被一个或者多个切面所通知的对象。例如,AServcieImpl和BServiceImpl,当然在实际运行时,Spring AOP采用代理实现,实际AOP操作的是TargetObject的代理对象。 ?AOP代理(AOP Proxy):在Spring AOP中有两种代理方式,JDK动态代理和CGLIB代理。默认情况下,TargetObject实现了接口时,则采用JDK动态代理,例如,AServiceImpl;反之,采用CGLIB代理,例如,BServiceImpl。 强制使用CGLIB代理需要将 的 proxy-target-class属性设为true。 通知(Advice)类型: ?前置通知(Before advice):在某连接点(JoinPoint)之前执行的通知,但这个通知不能阻止连接点前的执行。ApplicationContext中在 里面使用元素进行声明。例如,TestAspect中的doBefore方法。

古书的注解

古书的注解 一、为什么要读古注 《孟子·梁惠王上》:“为长者折枝,语人曰:我不能。是不为也,非不能也。” 赵歧注:?折枝,案摩,折手节,解罢枝也。 刘熙注:?折枝,若今之案摩也。? 陆筠注:?折枝为磬折腰肢。? 朱熹注:?为长者折枝,以长者之命折草木之枝。? 杜甫诗《戏作俳谐体遣闷》:“家家养乌鬼,顿顿食黄鱼”。 《梦溪笔谈》:?士人刘克博观异书。杜甫诗有?家家养乌鬼,顿顿食黄鱼?。……克乃按《夔州图经》,称峡中人谓鸬鹚为‘乌鬼’。蜀人临水居者,皆养鸬鹚,绳系其颈,使之捕鱼,得鱼则倒提出之,至今如此。余在蜀中,见人家有养鸬鹚使捕鱼,信然,但不知谓之‘乌鬼’耳。? 古书的注释按时间分可以分为古注和今注两大类(大体清代以前的注释叫古注)。今注吸收了前人的研究成果,一般说来观点比较正确。科学性较强,而且使用现代汉语,通俗易懂,但我们阅读古书仅仅借助今注是不够的,这是因为: 1、古代的传注家距古书成书时代近,如汉代注先秦之书,也就是几百年,语言变化不大,典章制度尚存,加之他们学识渊博,学风扎实,所作的注解往往比较可靠。这些古注都是今注的基础和依据。今注有的比较简单,各种注本对一些问题的解释也不尽相同,为了更加确切、深入的理解古书的内容,就必须阅读古注。 2、有许多古书至今没有今注。我国的古代典籍浩如烟海,有今注的只是一小部分,对多数没有今注可参考的古书在阅读时必须借助古注。 古人读书非常重视古注。(清)阮元在《十三经注疏》前的《重刻宋版注疏总目录》中说:“窃谓士人读书当从经学始,经学当从注疏始。空疏之士,高明之徒,读注疏不终卷而思卧者,是不能潜心研索,终身不知有圣贤诸儒经传之学矣。”

spring配置和注解开发原理

1、Spring是一个开源、轻量级框架(轻量级是指依赖的东西少) 2、Spring核心控制反转(IoC)和面向切面(AOP)。 ——AOP:面向切面编程,扩展功能时不用修改源代码 ——IOC:创建对象不再是自己new出来,而是交给spring容器管理 3、Spring希望为企业应用提供一站式(one-stopshop)的解决方案。 一站式:从web层到访问数据库层都有相应解决方案。 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 对象的创建交给spring管理(基于配置的方式实现、基于注解的方式实现) IOC底层原理:Xml配置、dom4j解析xml、工厂设计模式、反射 工厂模式:将对象的创建交给工厂,使用时调用工厂方法来获取。A需要B时,不是直接创建B,而是通过C的方法来获取,C的方法用来创建B。 注解方式原理:

Spring整合web框架原理 1、把加载配置文件和创建对象的过程,在服务器启动的时候完成。 2、用监听器实现 Spring注解: ————注解是代码里面的特殊标签,使用注解可以完成一定功能; 注解写法@注解名(属性名称=属性值);注解可以用在类上、方法上、属性上。 注解使用: 1、在对应类上加上注解,标明该类的创建交给spring来管理。

2、开启注解扫描功能,要指明扫描哪些包。 3、如果要为属性注入,则在属性上使用@autowired注解 AOP概念: 面向切面编程,扩展功能而不用修改源代码,采用横向抽取机制,取代了传统的纵向继承。 传统的纵向继承,耦合度太高 AOP底层使用动态代理实现:a. 如果是有接口的情况,使用动态代理创建接口实现类代理对象,b.如果没有接口,使用动态代理创建类的子类的代理对象。

Spring注解@Componen、@Repository@Service、@Controller区别

Spring 2.5 中除了提供@Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和@Controller。在目前的Spring 版本中,这3 个注释和@Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。虽然目前这 3 个注释和@Component 相比没有什么新意,但Spring 将在以后的版本中为它们添加特殊的功能。所以,如果Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用@Repository、@Service 和@Controller 对分层中的类进行注释,而用@Component 对那些比较中立的类进行注释。 在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。Spring2.5为我们引入了组件自动扫描机制,他可以在类路径底下寻找标注了@Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理。它的作用和在xml文件中使用bean节点配置组件时一样的。要使用自动扫描机制,我们需要打开以下配置信息: Java代码 1. 3. 4. 5. 6. 其中base-package为需要扫描的包(含所有子包)@Service用于标注业务层组件,@Controller用于标注控制层组件(如struts中的action),@Repository用于标注数据访问组件,即DAO组件,而@Component 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。 7. @Service public class VentorServiceImpl implements iVentorService { 8. } @Repository public class VentorDaoImpl implements iVentorDao { 9. } getBean的默认名称是类名(头字母小写),如果想自定义,可以@Service(“aaaaa”)这样来指定,这种bean默认是单例的,如果想改变,可以使用@Service(“beanName”) @Scope(“prototype”)来改变。可以使用以下方式指定初始化方法和销毁方法(方法名任意):@PostConstruct public void init() { 10. } 11. @PreDestroy public void destory() { 12. } 注入方式: 把DAO实现类注入到service实现类中,把service的接口(注意不要是service的实现类)注入到action中,注

spring的@Transactional注解详细用法

spring的@Transactional注解详细用法 各位读友大家好!你有你的木棉,我有我的文章,为了你的木棉,应读我的文章!若为比翼双飞鸟,定是人间有情人!若读此篇优秀文,必成天上比翼鸟! spring的@Transactional注解详细用法Spring Framework对事务管理提供了一致的抽象,其特点如下:为不同的事务API 提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate, JPA(Java Persistence API和JDO(Java Data Objects)支持声明式事务管理,特别是基于注解的声明式事务管理,简单易用提供比其他事务API如JTA更简单的编程式事务管理API与spring数据访问抽象的完美集成事务管理方式spring支持编程式事务管理和声明式事务管理两种方式。编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。显然声明式事务管理要优于编程式事务管理,这正是spring

古代汉语练习——古书注解

古书注解练习 [练习一] 一、填空: 1、注解古书的工作开始于_______时代。当时著名的注解家有_____、______、______、______。 2、一部重要的古代作品,注解的人常常很多,后来就有人把各家的注选集在一起,再加 上自己的注解,成为________或_________,例如何晏注《_____ _____》,就是此类著作。 3、注解常见的几种情况有______、_______和________。 4、《十三经注疏》大多数是______人或_______人做的注,______人做的疏。 5.《春秋左传》是晋_______注,唐_____等正义;〈尔雅〉是晋_____注,宋______疏。二、将常用的注解术语“曰”、“谓”、“犹”、“貌”、“之言”分别填入括号。 1.《礼记·王制》:“古者公田籍而不税。”注:“籍( )借也。” 2.《诗·魏风·伐檀》:“之河之侧兮。”毛传:“侧( )崖也。” 3.《楚辞·涉江》:“冠切云之崔嵬。”王逸章句:“崔嵬,高()。” 4、《论语·为政》:“道之以政,齐之以刑。”孔注:“政()法教。” 5、《论语·学而》:“有朋自远方来,不亦乐乎?”郑注:“同门()朋,同志()友。” 三、阅读下面古书的注解,并回答问题: 谁谓河广,一苇杭之。杭,渡也。笺云:谁谓河水广与,一苇加之,则可以渡之,喻狭也。今我之不渡,直自不往耳,非为其广。○苇,韦鬼反。杭,户[疏]笺:“一苇”郎反。与,音余,下“远”与“同”。狭,音洽。为,于伪反○正义曰:“言一苇者,谓一束者也,可以浮之水上而渡,若桴栰然,非一根苇也。此假有渡者之辞,非喻夫人之宋渡河也。何者?此文公之时,卫已在河南,自卫适宋不渡河。”(《诗经·卫风·河广》) 1、哪几句话是毛传? 2.哪些话是郑笺? 3.哪些话是孔疏?孔疏是解释谁的话? 4.哪些话是陆德明《经典释文》中的? 四、简答题: 1.古书注解中的“谓”和“谓之”有何不同? 2.古书注解中“读为、读曰”和“读若、读如”有何分别? [练习二] 一、选择题(单项或多项): 1.古书注解中,用作校勘的术语是____________。 ①之言,之为言;②夺;③当为;④谓之;⑤犹 2.为《十三经注疏》作《校勘记》的是_________。 ①王念孙;②王引之;③俞樾;④阮元 3.萧统的《文选》,在唐代有___________。 ①李善注;②五臣注;③颜师古注;④孔疑达注 4.李善为李密《陈情表》“既无伯叔,终鲜兄弟。”两句加了注:“毛诗曰。终鲜兄弟。维予与女。”李善这里是____________。

Spring@Autowired注解与自动装配

@Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作,这里必须明确:@Autowired是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Qualifier使用; @Autowired可以对成员变量进行标注 1.package com.baobaotao; 2.import org.springframework.beans.factory.annotation.Autowired; 3.public class Boss { 4.@Autowired 5.private Car car; 6.@Autowired 7.private Office office; 8.… 9.} 在applicationContext.xml中把原来引用的标签也去掉。 1. 2. 6. 7. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 这样,当 Spring 容器启动时,AutowiredAnnotationBeanPostProcessor 将扫描 Spring 容器中所有 Bean,当发现 Bean 中拥有 @Autowired 注释时就找到和其匹配(默认按

Spring注解详解

Spring注解详解 目录 一、注解说明 (2) 1.使用简化配置 (2) 2.使用Bean定义注解 (2) 3.Spring支持以下4种类型的过滤方式: (2) 二、注解介绍 (2) 1.@Controller (3) 2.@Service (3) 3.@Autowired (4) 4.@RequestMapping (4) 5.@RequestParam (5) 6.@ModelAttribute (6) 7.@Cacheable和@CacheFlush (7) 8.@Resource (7) 9.@PostConstruct和@PreDestroy (8) 10.@Repository (8) 11.@Component(不推荐使用) (8) 12.@Scope (8) 13.@SessionAttributes (9) 14.@InitBinder (9) 15.@Required (9) 16.@Qualifier (10)

一、注解说明 1.使用简化配置 将隐式地向Spring容器注册以下4个BeanPostProcessor: AutowiredAnnotationBeanPostProcessor CommonAnnotationBeanPostProcessor PersistenceAnnotationBeanPostProcessor RequiredAnnotationBeanPostProcessor 2.使用Bean定义注解 如果要使注解工作,则必须配置component-scan,实际上不需要再配置annotation-config。base-package属性指定了需要扫描的类包,类包及其递归子包中所有的类都会被处理。还允许定义过滤器将基包下的某些类纳入或排除。 3.Spring支持以下4种类型的过滤方式: 1)注解org.example.SomeAnnotation将所有使用SomeAnnotation注解的类过滤出来 2)类名指定org.example.SomeClass过滤指定的类 3)正则表达式com.kedacom.spring.annotation.web..*通过正则表达式过滤一些类 4)AspectJ表达式org.example..*Service+通过AspectJ表达式过滤一些类 二、注解介绍 注解种类: 1)@Controller 2)@Service 3)@Autowired 4)@RequestMapping 5)@RequestParam 6)@ModelAttribute

Java Spring各种依赖注入注解的区别

Spring对于Bean的依赖注入,支持多种注解方式: 直观上看起来,@Autowired是Spring提供的注解,其他几个都是JDK本身内建的注解,Spring 对这些注解也进行了支持。但是使用起来这三者到底有什么区别呢?笔者经过方法的测试,发现一些有意思的特性。 区别总结如下: 一、@Autowired有个required属性,可以配置为false,这种情况下如果没有找到对应的bean 是不会抛异常的。@Inject和@Resource没有提供对应的配置,所以必须找到否则会抛异常。 二、@Autowired和@Inject基本是一样的,因为两者都是使用AutowiredAnnotationBeanPostProcessor来处理依赖注入。但是@Resource是个例外,它使用的是CommonAnnotationBeanPostProcessor来处理依赖注入。当然,两者都是BeanPostProcessor。

TIPS Qualified name VS Bean name 在Spring设计中,Qualified name并不等同于Bean name,后者必须是唯一的,但是前者类似于tag或者group的作用,对特定的bean进行分类。可以达到getByTag(group)的效果。对于XML配置的bean,可以通过id属性指定bean name(如果没有指定,默认使用类名首字母小写),通过标签指定qualifier name: 如果是通过注解方式,那么可以通过@Qualifier注解指定qualifier name,通过@Named或者@Component(@Service,@Repository等)的value值指定bean name:

spring mvc注解配置及@value的使用说明

一、springmvc注解配置 1.web.xml: restfull contextConfigLocation classpath:config/spring.xml spring监听器 org.springframework.web.context.ContextLo aderListener

spring org.springframework.web.servlet.Dispatcher Servlet contextConfigLocation classpath:config/spring-mvc.xml spring / index.jsp 2.spring.xml:

Spring Aop 采用注解方式开发

1.建立工程后,首先所需要的导入jar ---------------------------------------------------------------------------------------------------------------------- 2.导入jar后,就该配置xml 注意下面红色的配置 在spring的配置文件里面只需要加上,可以使用base-package="*"表示全部的类。 编写主类测试: @Service public class Main {

古汉语通论(十七)古书的注解(上)

古汉语通论(十七)古书的注解(上) 我国比较重要的古籍,前人大都作过注解。今天我们要想比较顺利地读懂一部古书,一般都要参看旧注。有些文字比较艰深的古书,如果不参看旧注甚至根本无法读懂。 注解古书的工作开始於汉代。秦以前的许多典籍传到汉代,由於种种原因(如语言的发展,口授和传抄的错误等),汉代人已经不能完全读懂;於是有一些人专门为这些古书做注解,像毛亨、孔安国、马融、郑玄等,都是著名的注解家。郑玄对先秦的经书,像《周易》《毛诗》《周礼》《仪礼》《礼记》《论语》等书,都曾作过注解。这些注解对我们了解先秦古籍非常有用,如果没有汉代学者这一番辛勤的工作,有许多先秦古籍我们今天是很难读懂的。 到了唐代,距离汉代又有六七百年了,许多汉人的注解在唐代人看起来,又不是那么容易理解了,於是出现了一种新的注解,作者不仅解释正文,而且还给前人的注解作注解。这种注解一般叫做“疏”,也叫“正义”。例如现在最通行的《十三经注疏》中的《诗经》(注:《十三经注疏》大多数是汉朝人或魏晋人做的注,唐宋人做的疏,各部书的注疏人如下: 《周易》:魏王弼、韩康伯注,唐孔颖达等正义; 《尚书》:旧题汉孔安国传,唐孔颖达等正义; 《诗经》:汉毛亨传,汉郑玄笺,唐孔颖达等正义; 《周礼》:汉郑玄注,唐贾公彦疏; 《仪礼》:汉郑玄注,唐贾公彦疏; 《礼记》:汉郑玄注,唐孔颖达等正义; 《春秋左传》:晋杜预注,唐孔颖达等正义; 《春秋公羊传》:汉何休注,唐徐彦疏; 《春秋谷梁传》:晋范宁注,唐杨士勋疏; 《论语》:魏何晏集解,宋邢昺疏; 《孝经》:唐玄宗注,宋邢昺疏; 《尔雅》:晋郭璞注,宋邢昺疏; 《孟子》:汉赵岐注,宋孙奭疏;),就是汉毛亨传,汉郑玄笺,唐孔颖达等正义。毛

spring注解注入示例详解

一、各种注解方式 1.@Autowired注解(不推荐使用,建议使用@Resource) @Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。 @Autowired的标注位置不同,它们都会在Spring在初始化这个bean时,自动装配这个属性。要使@Autowired能够工作,还需要在配置文件中加入以下 Xml代码 1. 2. @Qualifier注解 @Autowired是根据类型进行自动装配的。例如,如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在UserDao类型的bean,也会抛出BeanCreationException异常。我们可以使用 @Qualifier配合@Autowired来解决这些问题。如下: 1). 可能存在多个UserDao实例 Java代码 1.@Autowired 2.@Qualifier("userServiceImpl") 3.public IUserService userService; 或者 Java代码 1.@Autowired 2.public void setUserDao(@Qualifier("userDao") UserDao userDao) { https://www.doczj.com/doc/bf16059920.html,erDao = userDao; 4.} 这样,Spring会找到id为userServiceImpl和userDao的bean进行装配。 2). 可能不存在UserDao实例 Java代码 1.@Autowired(required = false) 2.public IUserService userService;

相关主题
文本预览
相关文档 最新文档