- 浏览: 441974 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
sunwang810812:
万分感谢中!!!!!这么多年终于看到一个可运行可解决的方案!! ...
POI 后台生成Excel,在前台显示进度 -
zzb7728317:
LZ正解
Spring Jackson AjaxFileUpload 没有执行回调函数的解决办法 -
sleeper_qp:
lz是在源码上修改的么? 源码的话你重新编译一遍了么? 可 ...
由nutch readseg -dump 中文编码乱码想到的…… -
shenjian430:
请问你改好的程序在写在哪了?
由nutch readseg -dump 中文编码乱码想到的…… -
yinxusen:
It seems to be the bug occur in ...
Mahout Local模式 执行example的注意点
【转】:http://blog.csdn.net/providencezy/article/details/1909002
NameMatchMethodPointcutAdvisor和RegexMethodPointcutAdvisor提供了对一定命名规则和正则表达式切入点的封装,defaultPointcutAdvisor则提供了一切切入点的支持,Spring提供了4种用来定义切入的类,分别为:org.springframework.aop.support.NameMatchMethodPointcut、org.springframework.aop.support.JdkRegexpMethodPointcut、org.springframework.aop.support.Perl5RegexpMethodPointcut,org.springframework.aop.support.ExpressionPointcut,这四种可以用来描述切入点的类均可由DefaultPointcutAdvisor来进行封装,首先我们讲解一下DefaultPointcutAdvisor的使用方法:
DefaultPointcutAdvisor类的使用很简单,他有一个 advice及 pointcut 属性,advice属性用来指明要使用的通知,pointcut属性用来指定切入点,我们可以通过构造子或设值注入方式来配置这个 Bean。看下面的构造子注入方式:
<bean id="defaultAdvisor"
class="org.springframework.aop.support.DefaultPointcutAdvisor">
<constructor-arg ref="adviceBean"/>
<constructor-arg ref="poingcutBean"/>
</bean>
class="org.springframework.aop.support.DefaultPointcutAdvisor">
<constructor-arg ref="adviceBean"/>
<constructor-arg ref="poingcutBean"/>
</bean>
或者使用设值方法注入,如下所示:
<bean id="defaultAdvisor"
class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="advice" ref="adviceBean"></property>
<property name="pointcut" ref="pointcutBean"></property>
</bean>
class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="advice" ref="adviceBean"></property>
<property name="pointcut" ref="pointcutBean"></property>
</bean>
下面集合这四种切入点的描述类一起讲解DefaultPointcutAdvisor:
1、org.springframework.aop.support.NameMatchMethodPointcut
将前面的RegexpMethodPointcutAdvisor的配置换成NameMatchMethodPointcut结合DefaultPointcutAdvisor只需要修改配置文件,最终配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="beforeAdvice"
class="spring.chapter3.advice.AdviceBeforeComponent" />
<bean id="component" class="spring.chapter3.proxy.Component" />
<bean id="pointcutBean" class="org.springframework.aop.support.NameMatchMethodPointcut">
<property name="mappedNames">
<list>
<value>business*</value>
</list>
</property>
</bean>
<bean id="defaultAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="advice" ref=" beforeAdvice "/>
<property name="pointcut" ref="pointcutBean" />
</bean>
<bean id="proxy"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces"
value="spring.chapter3.proxy.IComponent" />
<property name="target" ref="component" />
<property name="interceptorNames">
<list>
<value>defaultAdvisor</value>
</list>
</property>
</bean>
</beans>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="beforeAdvice"
class="spring.chapter3.advice.AdviceBeforeComponent" />
<bean id="component" class="spring.chapter3.proxy.Component" />
<bean id="pointcutBean" class="org.springframework.aop.support.NameMatchMethodPointcut">
<property name="mappedNames">
<list>
<value>business*</value>
</list>
</property>
</bean>
<bean id="defaultAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="advice" ref=" beforeAdvice "/>
<property name="pointcut" ref="pointcutBean" />
</bean>
<bean id="proxy"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces"
value="spring.chapter3.proxy.IComponent" />
<property name="target" ref="component" />
<property name="interceptorNames">
<list>
<value>defaultAdvisor</value>
</list>
</property>
</bean>
</beans>
NameMatchMethodPointcut只有一个属性mappedName或者mappedNames,前者表示映射单个字符串,后者表示映射一组字符串,支持<list>配置,这里“business*”表示所有business开头的方法,这里的“*”是通配符不是正则表达式,可以看出DefaultPointcutAdvisor的配置也很简单,就是给advice属性指定为beforeAdvice也就是前置通知,同时给pointcut属性指向了配置的NameMatchMethodPointcut。
2、org.springframework.aop.support.JdkRegexpMethodPointcut、
org.springframework.aop.support.Perl5RegexpMethodPointcut
由于这2个都是正则表达式切入点的描述,所以这里就放到一起对比讲解,JdkRegexpMethodPointcut需要在 JDK1.4 及以上的环境运行,不需要额外的库;Perl5RegexpMethodPointcut需要把 jakarta-oro-xx.jar 文件放到 classpath 上,比如 jakarta-oro-2.0.8.jar,这2个正则表达式切入点描述类的使用方法一样,他们均有2个属性:
(1) pattern或patterns:前者表示单个正则表达式,后置表示多个正则表达式,支持<list>配置;
(2) ExcludedPattern或ExcludedPatterns:前者表示排除某个字符串,后者表示排除一组字符串,支持<list>配置;
根据上面的讲述我们将前面的NameMatchMethodPoint改成JdkRegexpMethodPointcut和Perl5RegexpMethodPointcut配置,分别如下:
JdkRegexpMethodPointcut配置:
...
<bean id="pointcutBean"
class="org.springframework.aop.support. JdkRegexpMethodPointcut">
<property name="pattern">
<value>.*business.*</value>
</property>
<property name="ExcludedPattern">
<value>business2</value>
</property>
</bean>
...
<bean id="pointcutBean"
class="org.springframework.aop.support. JdkRegexpMethodPointcut">
<property name="pattern">
<value>.*business.*</value>
</property>
<property name="ExcludedPattern">
<value>business2</value>
</property>
</bean>
...
这里表示匹配所有business开头的方法但是除去了business2这个方法,其他的配置和NameMatchMethodPointcut一样。
Perl5RegexpMethodPointcut配置:
...
<bean id="pointcutBean"
class="org.springframework.aop.support. Perl5RegexpMethodPointcut">
<property name="pattern">
<value>.*business.*</value>
</property>
<property name="ExcludedPattern">
<value>business2</value>
</property>
</bean>
...
<bean id="pointcutBean"
class="org.springframework.aop.support. Perl5RegexpMethodPointcut">
<property name="pattern">
<value>.*business.*</value>
</property>
<property name="ExcludedPattern">
<value>business2</value>
</property>
</bean>
...
这里只需要给class换成org.springframework.aop.support. Perl5RegexpMethodPointcut就可以了,同时在classpath中要添加jakarta-oro-xx.jar文件,其他的不需要做任何改变。
3、org.springframework.aop.support.ExpressionPointcut
在 Spring2 中,在 Pointcut 的基础上,引入了一个 ExpressionPointcut 接口用来通过切入点表达语言来描述切入点。有了 ExpressionPointcut,我们可以使用下面更加简单的方式来描述切入点,如 execution(* Component.business*(..))表示执行所有 Component 的业务方法(此处为 business 打头的方法)。
Spring2 提供了一个 ExpressionPointcut 的实现,即 AspectJExpressionPointcut,该类的使用很简单,只需要做如下配置即可:
...
<bean id="pointcutBean"
class="org.springframework.aop.aspectj.AspectJExpressionPointcut">
<property name="expression"
value="execution(void spring.chapter3.proxy.Component.business*(..))">
</property>
</bean>
...
<bean id="pointcutBean"
class="org.springframework.aop.aspectj.AspectJExpressionPointcut">
<property name="expression"
value="execution(void spring.chapter3.proxy.Component.business*(..))">
</property>
</bean>
...
其他的配置和前面的几个均一样。
除了以上4种不同的切入点的应用,还可以自定义切入点进行某些特殊的运用,自定义切入点类只需要实现org.springframework.aop.pointcut类,然后再bean中声明该类,接着就可以使用这些自定的pointcut类了。
发表评论
-
hibernate的Criteria Query(转)
2014-06-29 21:22 717当查询数据时,人们往往需要设置查询条件。在SQL或HQL语句 ... -
【转】hibernate 中 Criteria 的使用介绍
2014-06-29 21:21 972转自:http://www.blogjava.net/jjs ... -
【转】Hibernate中Criteria的完整用法
2014-06-29 21:20 724转自:http://www.cnblogs.com/maba ... -
Java读写Oracle中的BLOB和CLOB
2013-10-16 18:00 2014转:http://www.iteye.com/topic/6 ... -
Spring的事务管理入门:编程式事务管理(TransactionTemplate)
2013-10-15 16:20 1031可有效应用于Oracle 临时表的insert和select ... -
jdbcTemplate 调用存储过程和回到函数
2013-10-15 09:09 3778转:http://blog.csdn.net/dancelo ... -
Spring3核心技术之JdbcTemplate
2013-10-15 09:03 1330转:http://zhou137520.iteye.com/ ... -
验证码在WebLogic下报错java.io.IOException: response already committed
2013-05-06 14:16 2610我的登录验证码代码,一个jsp,在Tomcat下没有问题,但 ... -
Struts2在eclipse的console中总是出现WARN OgnlValueStack:45 - Could not find property
2013-04-17 18:00 1728struts2 在发开时,控制台如输出大量警告信息,太烦人 ... -
【转】Eclipse自动关闭解决方法及eclipse.ini设置
2013-03-29 15:21 3812转自:http://liujun5563.blog.163. ... -
[转]批量将Java源代码文件的编码从GBK转为UTF-8
2012-11-12 13:43 1509转自:http://my.oschina.net/binny/ ... -
对代理模式与Java动态代理类的理解
2012-09-25 01:51 01. 代理模式 代理模式的作用是:为其他对象提供一种 ... -
【转】 java中yield(),sleep()以及wait()的区别
2012-09-13 22:49 866从操作系统的角度讲,os会维护一个ready queue(就绪 ... -
java 继承类 变量、静态变量、构造函数执行顺序
2012-09-10 16:07 1052包含普通变量、静态变量、构造函数、继承类的执行顺序为: 1、父 ... -
京东2012春笔试编程题
2012-09-10 12:58 01、求给定数组中最大的K个数function array[] ... -
Java实现Stack、Queue、BinaryTree
2012-09-11 10:28 14961、用数组实现Stack: public class MySt ... -
Java中a++和++a的分析
2012-09-18 08:34 2870本人从编译后的代码来看a++和++a的区别: 先看代码1: ... -
华为2012校园上机编程题
2012-09-09 16:04 0/** * 1. 手机号码合法 ... -
2011年9月7日,华为上机题Java实现
2012-09-08 15:58 0第二题: /** * 输入字符串长度len,字符串str, ... -
Java对于Cookie的操作详解
2012-09-18 08:34 8211.设置Cookie Cookie cookie = n ...
相关推荐
在本篇博文中,我们将深入探讨Spring AOP(面向切面编程)的使用,特别是如何通过Advisor指定切入点。Spring AOP是Spring框架的核心组件之一,它允许我们在不修改业务代码的情况下,实现对程序运行时行为的拦截和...
在Spring AOP中,主要有三个核心概念:Advice、Pointcut和Advisor。 1. Advice(通知): Advice描述了在特定连接点(Join Point)上执行的动作。在Spring AOP中,Advice主要与方法调用相关,用于向现有方法添加...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员在不修改原有业务代码的情况下,插入额外的逻辑或监控行为。本文将深入解析Spring AOP如何获取代理对象,即Proxy。 首先,我们需要理解AOP的...
在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点分离,将横切关注点(如日志、事务管理、安全检查等)与核心业务逻辑解耦。本篇文章主要讲解如何通过XML配置来实现Spring AOP的开发...
在Java应用中,Spring框架提供了强大的事务管理功能。Spring Boot基于Spring框架,简化了事务管理的配置。通常,我们会在Service层的方法上添加`@Transactional`注解来开启事务。但是,这种做法需要在每个需要事务...
DefaultPointcutAdvisor advisor = new DefaultPointcutAdvisor(pointcut, interceptor); return advisor; } } ``` 5. **监控页面配置** 在上面的 `druidServlet` 方法中,配置了 `/druid/*` 访问路径来查看...
<bean id="advisor" class="org.springframework.aop.support.DefaultPointcutAdvisor"> <property name="advice" ref="adviceObjectName"></property> <!-- 引用通知 --> ...
`DefaultAdvisorAutoProxyCreator`是Spring中最常用的自动代理创建者,它会自动将所有符合条件的advisor应用到所有的bean上。与`BeanNameAutoProxyCreator`不同,它不依赖于bean名称,而是依赖于advisor的pointcut...
在Spring框架中,自动代理是一种方便的特性,它允许我们无需手动创建代理对象即可为我们的bean添加拦截器或顾问(advisors)。`DefaultAdvisorAutoProxyCreator`是Spring AOP中用于实现自动代理创建的核心类,它根据...
此错误通常出现在Spring AOP(面向切面编程)配置中,当尝试为AOP顾问(Advisor)设置切面(Advice)属性时找不到对应的Bean定义。这可能是由于缺少必要的配置或者依赖库未被正确引入导致的。 **解决方案**: 1. **...
在Spring框架中,面向切面编程(AOP)是一种强大的设计模式,用于解耦核心业务逻辑与关注点,如日志、事务管理等。`BeanNameAutoProxyCreator`是Spring AOP实现中的一种代理创建器,它根据bean的名称来决定是否对...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员将关注点分离,例如日志记录、事务管理、权限检查等,这些通常被称为横切关注点,从核心业务逻辑中抽离出来。基于注解的AOP实现是Spring提供的一...
DefaultPointcutAdvisor DefaultPropertiesPersister DefaultRemoteInvocationExecutor DefaultRemoteInvocationFactory DefaultRequestToViewNameTranslator DefaultResourceLoader DefaultScopedObject ...
DefaultPointcutAdvisor advisor = new DefaultPointcutAdvisor(); advisor.setPointcut(pointcut); TransactionInterceptor interceptor = new TransactionInterceptor(transactionManager); advisor....