- 浏览: 822007 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 AOP(Aspect Oriented Programming)面向切面编程,简单来说就是实现横切(crossing)的工具。在一个程序的很多部分重复使用的某一块逻辑我们可以将其抽离出来作为一个切面,重构为一个独立的类,通过声明式配置在那些组件的方法调用前后织入这个切面。AOP将作为OOP的一种辅助,使得代码更加整洁灵活、逻辑更加清晰。 AOP的种类:静态和动态。静态AOP是指横切的逻辑是在编译期间织入到程序中去的,如果要修改横切就必须重新编译代码。动态AOP是在运行时织入程序中去的。Spring AOP框架使用动态代理技术来实现,包括了JDK动态代理和CGLIB动态代理两种方式。 JDK动态代理和CGLIB动态代理— JDK自带的动态代理使用java.lang.reflect.Proxy类,核心方法是getProxyClass(ClassLoader, Class<?> interfaces)。另外构造Proxy的时候需要绑定一个实现了InvocationHandler接口的实例。而 InvocationHandler唯一需要实现的方法就是invoke(Object proxy,Method method, Object[] args)。整个流程是Proxy会根据传入需要代理的类的interfaces构造一个代理类对象proxy,而针对这个proxy调用接口中的任何方法都会通过触发InvocationHanlder实例的invoke方法返回真实的调用结果。关于代理对象如何形成这里不讨论,笔者会以后专门总结。 JDK动态代理需要被代理的对象实现某些接口并职能代理这些接口中的方法。 CGLIB动态代理使用CGLIB包,这是一个强大的高性能字节码生成包,底层使用字节码处理框架ASM来转换字节码生成新类。除了ASM,脚本语言如Groovy和BeanShell也使用ASM生成Java代码。本质上,CGLIB是通过生成代理类的一个子类覆盖代理类的所有非final方法,并且还设置了callback。对代理类的每个方法调用会转变成用户定义的拦截方法,比JDK的动态代理要快一些。核心类是Enhancer,一般通过它的setSuperClass(targetClass)和setCallback(final int model)来配置代理类,最后通过enhancer.create()方法开始产生新类的字节码。与JDK动态代理相比,CGLIB没有被代理类必须实现接口的限制。 AOP的几个核心概念— 联结点(JointPoint):定义在程序的哪个位置,织入逻辑 通知(Advice):应该在联结点织入的代码 方面(Aspect):通知和切入点的组合叫做方面,在Spring AOP里面对应的类是Advisor 切入点(Pointcut):织入的代码在什么情况下将被执行,定义各种情况(方法调用是最基本的一种) 引入(Introduction):通过引入,可以在一个对象中加入新的方法或者属性、以改变它的结构,甚至增加实现一个接口的逻辑 Spring AOP各组件—(强调:Spring AOP只支持方法拦截的切入点) Spring中5种Advice MethodBeforeAdvice (前置通知):在联结点之前自定义的操作 AfterReturningAdvice (后置通知):在联结点之后执行的操作 MethodInterceptor (包围通知):模仿AOP联盟的“方法拦截”标准,包装一个方法的调用前后 ThrowAdvice (抛出通知):仅当方法调用调用抛出一个异常才执行 IntroductionInterceptor (引入):特殊拦截器,为了实现引入功能 Spring提供的7种Pointcut ComposablePointcut (可组合切入点):通过union()和intersection()组合操作两个或两个以上的切入点 ControlFlowPointcut (流程切入点):匹配另一个方法流程中包含的所有方法(直接或间接调用) DynamicMethodMatcherPointcut (动态方法匹配器切入点): 提供动态切入点的基类 JdkRegexpMethodPointcut (JDK正则表达式切入点):支持JDK1.4以上版本正则表达式匹配的方法 NameMatchMethodPointcut (名称匹配器方法切入点):根据一个方法名列表匹配 Perl5RegexpMethodPointcut (Perl5正则表达式切入点):支持Perl5的正则表达式语法 StaticMethodMatcherPointcut (静态方法匹配器切入点):提供静态切入点的基类 Spring AOP提供的几种Advisor (Spring AOP通过Advisor关联Pointcut和Advice) NameMatchMethodPointcutAdvisor:最基本的PointcutAdvisor,用以提供Spring中静态的 Pointcut实例 RegexpMethodPointcutAdvisor:支持用正则表达式来编写Pointcut表达式 DefaultPointcutAdvisor:典型的最简单组件,结合一个Pointcut和一个Advice的Advisor实例 DefaultIntroductionAdvisor:特别针对引入而提供的Advisor实例 Spring还提供自动代理建立者,比如DefaultAdvisorAutoProxyCreator,只要在定义文件中加上对它的设置,在 Bean配置文件读取完事之后DefaultAdvisorAutoProxyCreator会自动搜索所有的Advisor,自动将Advisor应用至能匹配的Pointcut目标上。 下面举例说明AOP的用法,硬编码的情况下完全可以不通过配置文件实现各种组件的关联,但一般在大工程里都是通过声明式配置文件方式来实现AOP 的。在Spring2.0也引入了<aop>标签和基于Annotationde 的方式使得配置AOP更加便利。 <?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:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <bean id="logAdvisor" class="com.business.aop.advisor.LogAdvisor"/> <bean id="sellService" class="com.business.service.sellService"/> <bean id="buyService" class="com.business.service.buyService"/> <aop:config> <aop:aspect id="logAspect" ref="logAdvisor"> <aop:pointcut id="businessService" expression="execution (*.business.service.*.*(...))"/> <aop:after ref="businessService" method="sell"/> <aop:before ref="businessService" method="buy"/> </aop:aspect> </aop:config> </beans> Spring AOP是Spring很强大的功能,如果合理利用,可以对大型工程的代码管理和流程控制上起到非常好的效果。实际上在Spring内部已经大量使用了 AOP技术,比如Spring的远程调用支持里,还有Spring的事务管理框架里。我们学习AOP重在体会这种思想,至少在学习Spring其它方面的特性时能够分辨出哪些是明显的AOP部分,这也能有助于深入理解其它方面的特性。 Spring AOP只是实现了AOP联盟的全部AOP技术的一小部分,但是根据帕累托法则已经能满足百分之80的需求,这也是Spring的设计思想之一, 力求简单灵活轻量级无侵入,不提倡EJB时代的为小部分需求集成大规模架构。
发表评论
-
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 1475Spring AOP总结 Spring ... -
Spring参考手册 IOC
2010-09-29 10:41 1273Spring参考手册 IOC 概述 ... -
Spring参考手册 AOP
2010-09-29 10:39 1464Spring参考手册 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 1665Spring 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-aop-jar"这个主题涉及到Spring框架中的核心组件之一——Spring AOP。这里我们将深入探讨Spring AOP、相关jar文件以及它们在实际开发中的作用。 首先,我们来看一下提供的文件: 1. aopalliance.jar:这是一...
总结一下,Spring的AOP机制通过JDK动态代理和CGLIB动态代理提供了强大的横切关注点管理功能。开发者可以轻松地定义切面和通知,以实现如日志、事务管理等功能,同时保持核心业务代码的清晰和简洁。在Spring Boot项目...
### Spring之AOP介绍 #### 一、AOP概述 面向方面编程(Aspect-Oriented Programming,简称AOP)作为一种编程范式,旨在通过模块化的方式处理横切关注点(Cross-cutting Concerns)。传统的面向对象编程(OOP)虽然...
Spring AOP,即面向切面编程,是Spring框架的核心组件之一,它允许程序员在不修改原有业务代码的情况下,对程序进行功能增强。本篇文章将详细阐述Spring AOP的基本概念、种类、代理原理、通知类型以及切入点,帮助你...
依赖注入(Inversion of Control,简称IOC)是Spring框架的核心特性之一,它的主要目标是降低组件之间的耦合度。在传统的Java应用中,对象通常自行创建依赖的对象,而在IOC中,这个责任由一个外部容器(即Spring的...
《深入解析Spring AOP:源码解读与应用实践》 Spring AOP,即Spring的面向切面编程,是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强或统一处理的方法。本文将围绕Spring AOP...
### Spring之AOP配置文件详解 #### 一、前言 在Java开发中,Spring框架因其强大的功能和灵活的配置而被广泛应用于企业级应用的开发。其中,面向切面编程(Aspect Oriented Programming,简称AOP)是Spring框架的...
在Spring框架中,AOP(Aspect Oriented Programming,面向切面编程)是其核心特性之一,它允许开发者将关注点从主业务逻辑中分离出来,如日志、事务管理等,形成独立的切面,实现代码的解耦和模块化。本篇将深入探讨...
在Spring框架中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种强大的设计模式,它允许我们定义横切关注点,如日志、事务管理、权限检查等,然后将这些关注点与核心业务逻辑解耦。这篇教程将详细讲解...
### Spring应用中的AOP详解 #### 一、AOP概览 AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,旨在通过将横切关注点(cross-cutting concerns)从业务逻辑中分离出来,提高系统的模块化程度。在...
总结来说,Spring的AOP编程为我们提供了一种优雅的方式来处理系统中的横切关注点,通过切面、通知、切点和连接点等概念,我们可以将关注点分离,提高代码的可读性和可维护性。无论是基于代理还是注解,Spring AOP都...
总结来说,Spring 3.0.5的AOP功能使得开发者能够更有效地组织代码,将关注点分离,提高代码的可读性和可维护性。通过理解并熟练运用AOP,你可以构建出更加优雅、易于扩展的Java应用程序。对于开发者而言,熟悉Spring...
### Spring中的AOP不生效的原因及解决方法 在Java开发中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种重要的编程思想和技术手段,主要用于处理横切关注点问题,如日志记录、性能统计、安全控制、...
Spring AOP,全称Aspect Oriented Programming(面向切面编程),是Spring框架的核心部分之一,它为Java开发者提供了强大的面向切面的编程能力。本文将围绕spring-aop.jar这个核心组件,详细探讨Spring AOP的原理、...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种强大的方式来实现横切关注点,如日志、事务管理、性能监控等,而无需侵入业务代码。下面将详细介绍Spring AOP的注解方式和XML配置方式。 ### ...
总结来说,Spring 3.0.5通过AOP提供对`HttpServletResponse`的扩展支持,允许开发者在不侵入业务逻辑的情况下,灵活地控制HTTP响应。这种能力对于实现诸如日志记录、性能监控、异常处理、安全性控制等跨切面的功能...
总结来说,模拟Spring的IoC和AOP主要是通过注解来管理和控制对象的生命周期及行为。虽然这种模拟简化了Spring的复杂性,但其核心思想是一致的:降低耦合,提高可维护性和可扩展性。理解并实践这些概念,对于掌握...
Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许开发者在不修改源代码的情况下,通过插入切面来增强或改变程序的行为。在本教程中,我们将深入探讨Spring AOP的不同使用方法,包括定义切点、通知类型...
总结,Spring AOP源码的探索有助于开发者深入理解面向切面编程的实现机制,提升问题解决能力,从而更好地利用AOP技术优化和维护应用程序。通过实践与学习,我们可以更好地驾驭这个强大的工具,提高代码的可维护性和...
Spring框架作为Java开发领域的领头羊之一,提供了强大的AOP支持。本文旨在深入探讨Spring AOP的核心概念及其原理。 #### 二、AOP基本概念 AOP是一种编程范式,其目的是提高模块化程度,特别是将那些对很多类都具有...