- 浏览: 807382 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 1082一 AOP(Aspect oriented program ... -
Spring框架与AOP思想的研究与应用
2010-09-29 11:11 1218Spring框架与AOP思想的研 ... -
Spring AOP总结
2010-09-29 10:47 1445Spring AOP总结 Spring ... -
Spring参考手册 IOC
2010-09-29 10:41 1240Spring参考手册 IOC 概述 ... -
Spring总结之AOP
2010-09-29 10:35 1206Spring总结之AOP AOP( ... -
对Spring AOP中三种实现方式的总结
2010-09-29 10:34 1219aop: 1: 编程式: 其中,必须先自己从s ... -
Spring IoC控制反转总结
2010-09-28 09:21 1480Spring IoC控制反转总结 ... -
Spring 是什么 以及总结
2010-09-28 08:20 1266什么是spring Spring的 ... -
Spring Jar包
2010-09-18 21:57 1636Spring Jar包 spring.jar是包含 ... -
Spring的简单应用实例
2010-08-21 18:29 960Spring的简单应用实例 ... -
spring自己总结的知识
2010-08-15 13:52 929Spring:总结用XML配置的十二个最佳实践2007-05- ... -
spring笔记
2010-08-15 13:51 1046------------------------------- ...
相关推荐
资源名称:Spring Framework开发参考手册 chm格式 内容简介: Spring Framework 开发手册 chm,一份对Spring特性的参考指南,内容涵盖Spring概述、使用场景、Spring2.0新特性、面向切面编程、中间层...
另外,Spring还有一个全功能的 MVC框架,并能透明的把 AOP 集成到你的软件中去。 你可以把Spring当作一个潜在的一站式企业应用。或者,把Spring看作一个标准开发组件,根据自己的需要,只取用它的部分组件使用而...
Spring Security 参考 1 第一部分前言 15 1.入门 16 2.介绍 17 2.1什么是Spring Security? 17 2.2历史 19 2.3版本编号 20 2.4获得Spring安全 21 2.4.1使用Maven 21 Maven仓库 21 Spring框架 22 2.4.2 Gradle 23 ...
spring2.5中文参考手册,AOP,DI,spring webflow等
6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 6.2.2. 声明一个切面 6.2.3. 声明一个...
Spring为编写企业应用程序提供了轻量的解决方案,同时仍然支持使用声明式事务、 用RMI或web service远程调用、以及使用多种方式来将数据...Spring提供了全功能的 MVC framework, 以及透明集成AOP到你的软件中的能力。
26.4.The Spring.NET AOP Cookbook 26.4.1.缓存 26.4.2.性能监视 26.4.3.重试规则 Spring.NET AOP最佳实践 第二十七章. .NET Remoting快速入门 27.1.简介 27.2.Remoting实例程序 27.3.实现 27.4.运行程序 27.5....
6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.7. 编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1....
另外,必须感谢Christian Bauer(来自Hibernate团队) ,他改写了DocBook-XSL软件来创建Hibernate参考手册,我们才得以创建这份文档。 也需要感谢Russell Healy为本手册的部分内容进行的详细而极富价值的审核。
另外,Spring还有一个全功能的 MVC框架,并能透明的把 AOP 集成到你的软件中去。 <br>你可以把Spring当作一个潜在的一站式企业应用。或者,把Spring看作一个标准开发组件,根据自己的需要,只取用它的部分组件...
spring2.52 Spring为编写企业应用程序提供了轻量的解决方案,同时仍然支持使用声明式事务、 用RMI或web service远程调用、以及使用多种方式来将数据持久化到数据库。...这份手册提供Spring的功能参考指南。
即使拥有良好的工具和优秀技术,应用软件开发也是困难重重。应用开发往往牵扯到方方面面,每件事情都难以控制,而且,开发周期也很难...另外,Spring还有一个全功能的 MVC框架,并能透明的把 AOP 集成到你的软件中去。
Spring提供了一种轻量级的解决方案,用于建立“快装式企业应用”。在此基础上,Spring还提供了包括声明式事务管理,RMI或Web Services...另外,Spring还有一个全功能的 MVC框架,并能透明的把 AOP 集成到你的软件中去。
chm 手册,一份对Spring特性的参考指南,内容涵盖Spring概述、使用场景、Spring2.0新特性、面向切面编程、中间层、WEB层、校验,数据绑定,BeanWrapper,与属性编辑器、使用Spring进行面向切面编程(AOP)、使用ORM...
无论是对于Java EE架构设计还是软件开发,《开发者突击:精通AOP整合应用开发(AspectWerkz+Aspectl+Spring)》都是精通开发Java Web应用的必备的实用手册。 《开发者突击:精通AOP整合应用开发(AspectWerkz+Aspectl+...
Spring 是由 Rod Johnson 撰写,并在其著作 Expert One-on-One: J2EE Design and Development 中有提到过,它是个轻量级(Lightweight)容器(Container)、实现 IoC(Inversion of Control)、AOP(Aspect-oriented...
Spring2.5-Reference_zh_CN.chm Spring2.5-中文参考手册.chm spring——AOP,IOC.doc Spring框架快速入门之简介.doc spring配置全书.doc Spring中的IOC与AOP详解.ppt
Spring技术手册这本书介绍了spring 2.0的新特性,诸如spring 2.0的新配置、新aop支持、增强的ioc、jdbc和form标签等新功能。它通过实际完成一个完整的spring项目示例,展示了与spring相关api的使用技巧,能够显著...