问题描述
多谢高手回复,在线等。。。。/**************************问题1***********************************/比如有个类B继承了类A可没有重写类A的fun方法那么我能指定他切到类B的这个方法吗?主要是有很多类继承了类A但我只想让切面去切到B类上//父类publicclassBaseCls{publicStringfun(){System.out.println("thisisBaseCls'sfun");return"BaseCls";}}//子类1publicclassClsAextendsBaseCls{}//子类2publicclassClsBextendsBaseCls{}//AOP配置类//这样写A、B两个类都切到了。@Before("execution(*com.test.aop.entity.BaseCls.fun())")publicvoidbefore_fun(JoinPointjp){System.out.println("前置切面运行,当前目标对象为:"+jp.getTarget().getClass());}那么如何写才能只为ClsA设置fun()的切面呢?/**************************问题2***********************************/<beanid="baseCls"class="com.test.aop.entity.BaseCls"abstract="true"/><beanid="clsA"class="com.test.aop.entity.ClsA"scope="prototype"/><beanid="clsC"parent="baseCls"scope="prototype"/>如何写execution(*???fun())才能对映射的clsC设置fun的切点呢?对clsA不要产生影响
解决方案
解决方案二:
直接在clsC的方法上切咯,代理会产生新的clsC的子类型,不会影响到原有基类的其他子类型
解决方案三:
拜托,给我写几句样例代码好吗?
解决方案四:
在你的方面那里"execution(*com.test.aop.entity.BaseCls.fun())baseCls改成clsC不就完了
解决方案五:
不好意思clsC没有实体类com.test.aop.entity这个包下没有clsC这个类,我配的是继承<beanid="clsC"parent="baseCls"scope="prototype"/>
解决方案六:
你配了这个,运行的时候肯定就有这个类被动态加载的,你试过了么?
解决方案七:
额。我算看明白了,只有一个类,要针对单个bean来横切,可以给clsC一个代理,@AspectJ表达式是在类层次上的,
解决方案八:
注解是编译进类的字节码文件上的,如果你没有类,是没办法操作的,只能基于XML配置
解决方案九:
那么基于XML怎么配置呢?给我写一段吧或者加我QQ290336727多谢了。
解决方案十:
那么基于XML怎么配置呢?给我写一段吧或者加我QQ290336727多谢了。