使用java语言,如何对一个类中的静态方法做切面编程?

如题所述

aop的事务代理机制最重要的放心是确定切入点,面,通知.具体看代码,下面是在spring中配置的我自己写的一个异常处理的aop作用类 ,该配置切入面在于在controller包下的所有类的所有注解为aspect的切面类,通知类型为表示在目标方法之前切入,切入点为controller包下的所有类所有方法.至于楼主所说的静态方法对于事务机制应该没什么区别吧,只要用within方法一样可以的

<!-- 定义共同处理组件 -->
<bean id="loggerBean"
class="org.tedu.cloudnote.aspect.LoggerBean">
</bean>
<!-- 将loggerBean组件切入到Controller方法上 -->
<aop:config>
<!-- 要切入哪个共同处理组件,ref指定共同组件id值 -->
<aop:aspect ref="loggerBean">
<!-- aop:before表示在目标方法之前切入,
method指定方法名;pointcut指定目标组件 -->
<aop:before method="logController"
pointcut="within(org.tedu.cloudnote.controller..*)"/>
</aop:aspect>
</aop:config>
之后这个bean所定义的 自定义类的代码如下 ,希望楼主给个采纳,如果问友喜欢,也可以给我个赞哦,摸摸大

package org.tedu.cloudnote.aspect;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

//封装共同处理的组件
@Component//扫描,等价于<bean>定义
@Aspect//等价于<aop:aspect ref="">
public class LoggerBean {

//要在Controller.execute开始位置切入
//方法规则:public void 方法名(){...} (前置通知)
@Before("within(org.tedu.cloudnote.controller..*)")
//等价于<aop:before method="logController" pointcut="">
public void logController(){
System.out.println("进入Controller组件处理");
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-05-20
静态方法你使用静态切点就可以了娃
org.springframework.aop.support.StaticMethodMatcherPointcut

静态方法来匹配切面
org.springframework.aop.support.StaticMethodMatcherPointcutAdvisor本回答被网友采纳
第2个回答  2016-06-11
静态方法是不oo的。因此做切面本身也是目的不明的。
如果你实在要切, 其实就是替换字节码内容, 可以试试cglib
第3个回答  2016-05-20
不能这样,这样会引起程序错乱的
第4个回答  2016-05-20
光java没用。要用spring定义切入点和切面

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网