- 浏览: 822020 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (488)
- struts1 (4)
- spring (13)
- extjs (36)
- mysql (3)
- sqlserver (2)
- oracle (37)
- 杂谈 (11)
- 面试相关 (35)
- Java基础知识总结 (5)
- Java重要知识点 线程和io流知识点 (6)
- 服务器相关 (1)
- 生活 (1)
- jsp (7)
- servlet (2)
- junit (3)
- struts2 (9)
- 开发必备 (4)
- 使用开发工具总结的知识 (4)
- ibatis (12)
- ajax (2)
- dwr (2)
- jquery (1)
- 设计模式 (4)
- Lucene的学习 (5)
- 经验总结 (19)
- mysql全文搜索相关 (7)
- hibernate (33)
- Sphinx (1)
- log4j的总结 (1)
- 敏捷开发 (9)
- 持续集成 (15)
- UML使用总结 (1)
- Scrum (1)
- OO(面向对象编程) (1)
- struts1和struts2总结 (1)
- 数据库加密 (1)
- 多线程和Socket编程 (6)
- PowerDesigner (2)
- 权限相关 (1)
- ant应用总结 (4)
- 面试必知知识点总结 (6)
- io流与nio流总结 面试相关 (1)
- 敏捷管理工具的使用 (7)
- hsqldb相关 (1)
- svn源码相关 (2)
- debug调试技巧总结 (1)
- hibernate和ibatis对比相关 (6)
- eclipse mylyn 插件的使用总结 (2)
- fisheye使用总结 (2)
- java泛型总结 (1)
- ssh整合总结 (10)
- SpringSide的学习总结 (1)
- JPA学习总结 (2)
- RoR 总结 (2)
- 模型驱动 总结 (1)
- Oracle SQL优化技巧 (4)
- 数据库相关资料 (1)
- oracle练习相关 (4)
- PowerDesigner 使用总结 (2)
- Struts实现国际化相关 (2)
- 权限框架 Spring Security (1)
- freemarker使用总结 (1)
- jsp servlet总结相关 (3)
- Java NIO总结 (1)
- 自己学习必须 (3)
- 蝴蝶容器相关 (2)
- eclipse插件的使用 (1)
- myeclipse的使用 (1)
- flex相关 (1)
- javaeye重生后总结的知识点 (2)
- 公司学习总结 (3)
- JAXB 相关 (1)
- ECSide (1)
- EdoJs 企业ajax框架 (1)
- RSA加密算法 (1)
- jbpm相关 (1)
- JMF原理 (1)
- MyEclipse使用总结 (1)
- Funsion Charts 相关总结 (3)
- 常用知识2011 (2)
- Flex与Java整合 (1)
- IBM WebSphere相关 (1)
- jQuery使用技巧 (2)
- 2011年面试相关知识点总结 (2)
- sqlserver开发相关 (8)
- eclipse 打jar相关 (2)
- Oracle/Mysql/SqlServer比较 (1)
- WebService Axis1.4开发相关 (4)
- 进制数的转换 总结 (1)
- WebService Axis2.0开发相关 (0)
- iteye Struts2 Spring Hibernate整合相关 (3)
- iteye osgi资料相关总结 (1)
- iteye ifos相关相关 (1)
- iteye 国际化相关 (1)
- iteye Hibernate缓存机制 (4)
- iteye Struts2 总结 (1)
- iteye Struts标签总结 (0)
- iteye web配置文件大全 (6)
- iteye Efs 框架总结 (1)
- iteye sql优化 (2)
- iteye 大数据量高并发的数据库优化 (1)
- iteye 开发相关 (1)
- iteye s1sh 和 s2sh整合中的问题以及解决 (1)
- iteye s1sh整合实例 (1)
- iteye s2sh整合实例 (1)
- iteye 面试相关 基础篇 (1)
- iteye Android相关 (1)
- iteye 面试相关 Web篇 (1)
- iteye Sql Server相关 (0)
- iteye struts1与struts2比较 (1)
- iteye jquery 和Struts2 (0)
- iteye struts2与其他插件整合 (0)
- iteye jquery 开发相关 (1)
- iteye eclipse结合spket(Ext,Jquery)开发相关 (0)
- iteye myeclipse 使用技巧相关 (0)
- iteye Memcached 缓存系统相关 (0)
- iteye 常用软件相关 (0)
- iteye 最新技术预览 AjaxSwing (0)
- iteye struts上传下载相关 (0)
- iteye 新技术相关 (0)
- test (0)
- iteye 开发Java游戏相关 (0)
- iteye Java反编译 (0)
- iteye XML解析相关 (0)
- iteye 压缩ZIP相关 (0)
- iteye 面试相关 (0)
- iteye Android开发相关 (4)
- csdn (0)
- e-inoc (0)
- iteye http错误码对应说明 (0)
- iteye 面试扩展知识点 (0)
- iteye oracle面试相关 存储过程,触发器,游标等 (0)
- iteye english study (0)
- iteye starflow工作流引擎 (0)
- iteye IBM WebSphere Application Server Toolkit使用相关 (0)
- iteye spring3 (0)
- iteye mybatis (0)
- iteye js技巧总结 (0)
- iteye SEO优化相关 (2)
- iteye QUI网页界面集成框架 (1)
- iteye AjaxAnywhere (1)
- iteye Nutz相关 (1)
- iteye ibatis技巧 (0)
- iteye dwz (0)
- 128个ajax/javascript框架 (0)
- iteye 2012 Java Swing教程 (1)
- iteye 码头集装箱相关 (1)
- iteye swing (2)
- 兼职工作 (0)
- 2012 新总结的面试相关知识点 常用知识点 (1)
- 淘宝网店相关 (0)
- oracle 常用函数 2012新总结 (1)
- 我的时尚潮流屋 (0)
- 2012 年 面试新总结知识 (1)
- 技巧 (1)
- 2013总结 (1)
- 2015工作相关 (3)
- springmvc (5)
- EasyPR-Java (1)
- java (2)
- editplus 4.0 注册码 (1)
- android (1)
- oracle连接数据库相关 (1)
- 编程资料总结 (2)
- 20160808 (1)
- visio 2013 (1)
最新评论
-
drew926:
泛型的类型参数可以有多个?这是java哪个版本支持的?
java泛型总结 -
listenan:
赞!非常感谢。
Scrum总结 -
cwscwj:
写的很深刻,谢谢,看了一遍,过段时间打算再看一遍。
Scrum总结 -
hwedwin:
w
Struts 2中的OGNL\EL的使用总结 -
lanni2460:
不错 很好 支持……
sqlserver三个驱动包下载
Spring参考手册 AOP
概述 Spring 2.0引入了一个简单而强大的机制,使用基于模式和@AspectJ注记样式实现自定义方面。Spring当前仅支持方法执行连接点而不支持字段拦截。 Spring AOP框架的目标并不是实现完整的AOP实现,主要目的是帮助IOC容器解决一些企业应用的常见问题。Spring AOP框架通常需要和Spring IOC容器一起使用,方面使用通常的Bean定义语法。如果需要一个全面的AOP解决方案,AspectJ是更好的选择。 Spring AOP框架是基于代理的,Spring缺省使用JDK的动态代理,JDK代理可以代理任何接口。而CGLIB代理主要用来代理类,如果一个Bean没有实现一个接口,Spring将使用CGLIB进行代理。 基本概念 Aspect……横切多个对象的关注点。事务管理是J2EE应用的一个横切关注点的极好事例。 Join Point……程序执行中的一个点,例如一个方法的执行或者异常处理,Spring中连接点总是指方法执行。 Advice……方面在一个特定的连接点执行的动作,许多AOP框架,包括Spring都将advice模型为一个拦截器,基于一个连接点维持一个拦截器堆栈。 Pointcut……用来匹配连接点的语法。 Advice和一个Pointcut关联,并且运行在Pointcut匹配的连接点处(比如具有指定名称的方法)。Spring使用AspectJ的 Pointcut语法。 Introduction……针对某个类型声明额外的方法和字段,Spring AOP允许针对任何代理的对象引入新的接口。比如可以使用introduction让一个Bean实例实现IsModified接口。 Target Object……被方面拦截的对象,Spring AOP使用运行时代理实现方面拦截机制,因此这些对象都是代理对象。 Aop Proxy……AOP框架为了实现方面规约而创建的代理对象。Spring框架中,AOP代理是一个JDK动态代理或者CGLIB代理。 Weave……将方面和其他对象类型进行关联创建Advice的方式,织入可以在编译时,加载时或运行时进行,Spring AOP使用运行时织入的方式。 Advice类型 Before Advice……连接点之前执行,除非抛出异常将无法阻止执行连接点。 After Return Advice……在连接点正常返回后执行。 After throwing advice……连接点抛出异常后执行。 After (finally) advice……不管连接点正常退出还是抛出异常都会执行。 Around advice……在连接点之前和之后执行,可以在方法执行前后添加自定义逻辑,可以终止连接点的继续执行,返回值或抛出异常。 @AspectJ支持 启用AspectJ 启用@AspectJ方面时,如果Spring检测到一个实例需要被一个或多个代理拦截,Spring 将自动为这个实例生成一个代理,拦截方法执行,启用AspectJ需要添加如下配置: xml 代码 1. <aop:aspectj-autoproxy/> 声明方面 AspectJ 对方面的支持是使用Annotation实现的,Spring将自动检测使用过@Aspect注记的Bean实例,配置AOP代理。AspectJ的方面 就是一个使用了@Aspect注记的类,和普通类一样,可以包含方法,字段,另外也可以包含pointcut,advice,introduction 等。 声明Pointcut Pointcut 用来决定哪些方法需要应用方面,其声明包括两部分,一部分是返回值为void的方法签名,一部分是@Pointcut注记,@Pointcut注记的语法 可以参见AspectJ参考指南。下面的示例定义了名称为anyOldTransfer的Pointcut,匹配任何方法名称为transfer: java 代码 1. @Pointcut("execution(* transfer(..))")// the pointcut expression 2. private void anyOldTransfer() {}// the pointcut signature Spring的Pointcut支持如下形式的限定方式: Within…..限制在指定的类型范围。 This……限制匹配的连接点所在的Bean实例的Spring AOP代理是指定的类型。 Target……限制匹配的连接点所在的Bean实例是指定的类型。 Args……限制匹配的连接点的参数是指定类型的实例。 @target……限制连接点所在的类有一个指定类型的注记。 @args……限制传递给连接点的参数的运行期类型有指定类型的注记。 @within……限制连接点在有特定注记的类型范围。 @annotation……限制连接点所在的 Bean实例的Spring AOP代理有指定的注记。 Pointcut表达式可以使用&&,||,!进行组合,也可以使用名称引用pointcut表达式,使用名称引用时,适用通常的java可见性规则,下面是几个示例: java 代码 1. @Pointcut("execution(public * *(..))") 2. private void anyPublicOperation() {} 3. @Pointcut("within(com.xyz.someapp.trading..*") 4. private void inTrading() {} 5. @Pointcut("anyPublicOperation() && inTrading()") 6. private void tradingOperation() {} 声明Advice Advice和一个Pointcut表达式关联,运行在Pointcut表达式匹配的方法执行前后。 针对几种不同类型的Advice,使用不同的注记来声明,比如使用@Before标记声明 before advice。 任何Advice方法可以声明一个org.aspectj.lang.JoinPoint 类型的参数,从而获取拦截方法的信息。 可以在声明Advice时,将拦截方法的参数传递进来,下面的示例想拦截第一个参数为 Account的方法,而且可以在advice方法内访问account对象。 java 代码 1. @Before("com.xyz.myapp.SystemArchitecture.dataAccessOperation() &&" + 2. "args(account,..)") 3. public void validateAccount(Account account) { 4. // ... 5. } 代理对象,目标对象和注记也可以相同的方式访问,下面的示例拦截使用@Auditable 的方法,而且可以在advice方法内访问auditable对象。 java 代码 1. @Before("com.xyz.lib.Pointcuts.anyPublicMethod() && " + 2. "@annotation(auditable)") 3. public void audit(Auditable auditable) { 4. AuditCode code = auditable.value(); 5. // ... 6. } Introduction Introduction使用@DeclareParents注记声明,这个注记用来声明匹配pointcut的类将实现一个新的接口。下面的示例声明所有的服务接口将实现UsageTracked接口: java 代码 1. @Aspect 2. public class UsageTracking { 3. @DeclareParents(value="com.xzy.myapp.service.*+", 4. defaultImpl=DefaultUsageTracked.class) 5. public static UsageTracked mixin; 6. @Before("com.xyz.myapp.SystemArchitecture.businessService() &&" + 7. "this(usageTracked)") 8. public void recordUsage(UsageTracked usageTracked) { 9. usageTracked.incrementUseCount(); 10. } 11. } Aspect实例模型 缺省情况应用上下文中每个方面只有一个单独的实例,Spring支持perthis和pertarget 模型。 基于模式的AOP 如果不能使用JDK5,可以使用基于XML格式的配置,Spring通过使用aop标记提供对方面定义的支持。在Spring配置中,所有的方面和advisor元素都必须放在一个<aop:config>元素内。</aop:config> 在基于模式的AOP中,Spring仅支持单例模型。要使用AOP标记,必须在配置文件中引入相应的 XSD文件如下: xml 代码 1. xsi:schemaLocation=" http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd" 声明方面 使用模式支持,一个方面只是Spring应用上下文中的一个Bean实例,状态和行为由这个Bean实例捕获,切入点和advice信息用XML描述。示例如下: xml 代码 1. <aop:config> 2. <aop:aspect 3. ... 4. aop:aspect> 5. aop:config> 6. <bean id=" 7. ... 8. bean> 声明Pointcut Pointcut可以直接声明在方面内部,也可以直接声明在<aop:config>元素内,可以供多个方面使用。</aop:config> xml 代码 1. <aop:config> 2. <aop:pointcut id="businessService" 3. Aspect Oriented Programming with Spring 4. Spring Framework (2.0.2) 118 5. expression="execution(* com.xyz.myapp.service.*.*(..))"/> 6. aop:config> 声明advice 下面的示例声明一个before类型的advice xml 代码 1. <aop:aspect id="beforeExample" ref="aBean"> 2. <aop:before 3. pointcut-ref="dataAccessOperation" 4. method="doAccessCheck"/> 5. ... 6. aop:aspect> 声明introduction 下面的示例声明一个introduction xml 代码 1. <aop:aspect id="usageTrackerAspect" ref="usageTracking"> 2. <aop:declare-parents 3. types-matching="com.xzy.myapp.service.*+", 4. implement-interface="UsageTracked" 5. default-impl="com.xyz.myapp.service.tracking.DefaultUsageTracked"/> 6. <aop:before 7. pointcut="com.xyz.myapp.SystemArchitecture.businessService() 8. and this(usageTracked)" 9. method="recordUsage"/> 10. aop:aspect> Advisor Advisor是Spring特有的概念,其实就是Pointcut和Advice的容器。 @AspectJ/XML 基于Schema的AOP定义比较清晰明了,而且很容易通过配置文件修改,也有两个缺点: Schema方式中关于方面的信息由分布在XML文件和Bean实例中,而@Aspectj方式,所有关于方面的信息都集中在一个模块的所有Bean实例中。 Schema方式仅支持方面的单例模型,@Aspectj方式支持组合命名的Pointcut。 代理机制 Spring AOP缺省使用JDK的动态代理机制,只能针对接口代理,如果需要针对类代理,可以使用CGLIB代理,要在AOP中强制使用CGLIB代理,可以设置 proxy-target-class属性如下: xml 代码 1. <aop:config proxy-target-class="true"> 2. <!-- other beans defined here... --> 3. aop:config> 使用CGLIB代理的一个问题是final方法不能被代理,因为final方法不能重写。 Spring框架使用代理机制,会导致调用自身方法的方法不能被代理,下面这种情况下,foo方法就不能被代理。
发表评论
-
AOP(Aspect oriented programming) 面向方面编程
2010-09-29 11:15 1120一 AOP(Aspect oriented program ... -
Spring框架与AOP思想的研究与应用
2010-09-29 11:11 1248Spring框架与AOP思想的研 ... -
Spring AOP总结
2010-09-29 10:47 1476Spring AOP总结 Spring ... -
Spring参考手册 IOC
2010-09-29 10:41 1273Spring参考手册 IOC 概述 ... -
Spring总结之AOP
2010-09-29 10:35 1239Spring总结之AOP AOP( ... -
对Spring AOP中三种实现方式的总结
2010-09-29 10:34 1241aop: 1: 编程式: 其中,必须先自己从s ... -
Spring IoC控制反转总结
2010-09-28 09:21 1501Spring IoC控制反转总结 ... -
Spring 是什么 以及总结
2010-09-28 08:20 1291什么是spring Spring的 ... -
Spring Jar包
2010-09-18 21:57 1666Spring Jar包 spring.jar是包含 ... -
Spring的简单应用实例
2010-08-21 18:29 996Spring的简单应用实例 ... -
spring自己总结的知识
2010-08-15 13:52 950Spring:总结用XML配置的十二个最佳实践2007-05- ... -
spring笔记
2010-08-15 13:51 1068------------------------------- ...
相关推荐
这本《Spring参考手册》与《Spring速查手册》是学习和掌握Spring框架的重要资源,特别适合初学者入门。 一、Spring概述 Spring框架由多个模块组成,包括Core Container(核心容器)、Data Access/Integration(数据...
spring2.5-中文参考手册.pdf将帮助开发者理解Spring早期版本的关键特性。 3. **Spring 中文开发手册**: 这份手册可能覆盖了Spring框架的整体架构,从基础到高级特性,如Spring Boot、Spring Cloud、Spring ...
这份中文版的Spring参考手册包含了全面的Spring框架信息,旨在帮助初学者快速掌握Spring的核心概念和使用技巧。 《SpringGuide.pdf》可能是Spring框架的基础指南,它可能涵盖以下内容: 1. **Spring概述**:解释了...
《Spring框架开发参考中文手册》是一本专门为Java开发者设计的指南,旨在帮助他们深入理解和熟练运用Spring框架进行软件开发。Spring作为Java企业级应用开发的主流框架,以其强大的功能、灵活的设计和广泛的社区支持...
Spring2.5中文参考手册是学习和理解Spring框架的重要资源,涵盖了上述所有核心概念和特性。通过深入阅读,开发者可以掌握如何利用Spring 2.5构建高效、灵活且易于维护的企业级应用。无论是在传统的J2EE环境中还是...
Spring中文参考手册是开发者掌握和深入理解这一框架的重要资源。下面将根据提供的标题和描述,详细介绍Spring框架的关键概念、核心功能以及如何使用手册进行学习。 1. **核心模块与概念** - **依赖注入...
《Spring开发参考手册》是一本全面且深入介绍Spring框架的宝贵资源,对于任何从事Java企业级应用开发的人员来说,都是不可或缺的工具书。该手册以CHM(Microsoft Compiled HTML Help)格式提供,便于快速查阅和离线...
这份"Spring中文参考手册"提供了全面的Spring框架组件的详细解释,旨在帮助开发者更好地理解和使用Spring。 Spring框架的核心特性包括依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented ...
1. **Spring 2.5.2 开发参考手册PDF**: 这份手册详细介绍了Spring 2.5.2的各个方面,包括IoC(Inversion of Control)容器、AOP(Aspect-Oriented Programming)、数据访问、Web开发、事务管理等。其中,IoC容器是...
资源名称:Spring Framework开发参考手册 chm格式 内容简介: Spring Framework 开发手册 chm,一份对Spring特性的参考指南,内容涵盖Spring概述、使用场景、Spring2.0新特性、面向切面编程、中间层...
通过这份中文开发参考手册,开发者可以深入了解Spring 2.0的每个角落,无论是核心的IoC容器、AOP,还是数据访问、Web应用,甚至是测试和Web服务,都能找到详细的解释和示例,从而更好地利用Spring 2.0构建高效、可...
《Spring 2.0中文参考手册》是一本深入解析Spring框架的重要资料,它全面覆盖了Spring 2.0版本的核心特性和应用场景。Spring作为一个轻量级的Java企业级应用框架,以其模块化、松耦合的设计理念,已经成为现代Java...
### Spring 开发参考手册知识点详解 #### 一、Spring 概览 **Spring** 是一个开源框架,最初是由 Rod Johnson 创建的,旨在简化企业级 Java 应用程序的开发过程。Spring 提供了一种轻量级的方式来管理和配置 Java ...
以下是对这两个文档——"Spring2.0参考手册(中文).pdf"和"Spring开发指南中文.pdf"中关键知识点的详细解读。 1. **依赖注入(Dependency Injection, DI)**:这是Spring的核心特性之一,允许开发者将对象间的依赖...
《Spring参考手册》是Spring Framework开发者的必备指南,它涵盖了Spring框架的核心概念、设计原则以及实际应用中的详细信息。Spring Framework作为Java企业级应用的重要支柱,提供了丰富的功能,包括依赖注入、面向...
《Spring Framework 开发参考手册》是一本针对Java开发者的重要指南,尤其对于那些使用Spring框架进行企业级应用开发的程序员来说,它提供了全面且深入的指导。Spring是Java平台上的一个开源框架,以其依赖注入...
《Spring2中文开发参考手册》是一本详尽的指南,专为使用Spring框架进行软件开发的程序员设计。这本书深入探讨了Spring框架的核心概念、新特性,以及如何利用XML配置和Spring MVC来构建高效的应用程序。以下是对这些...
《Spring Framework 中文参考手册》是一份详尽的文档,为开发者提供了全面深入的理解和应用Spring框架所需的各类知识点。Spring框架作为Java开发领域中的重量级框架之一,以其强大的功能、灵活的配置和广泛的社区...
### Spring框架参考手册知识点概述 #### 一、Spring框架概览 - **1.1 开始使用Spring** - Spring框架作为一个广泛使用的轻量级Java应用框架,为开发者提供了全面的解决方案,帮助他们构建高性能、可扩展的企业级...