Spring AOP能不能对子类做 父类方法的切点?

firefly21 2010-05-12 09:12:33
多谢高手回复,在线等。。。。
/************************** 问题1 ***********************************/

比如有个类B继承了类A 可没有重写类A的fun方法 那么我能指定他切到类B的这个方法吗? 主要是有很多类继承了类A 但我只想让切面去切到B类上
//父类
public class BaseCls {

public String fun(){
System.out.println("this is BaseCls's fun");
return "BaseCls";
}
}
//子类1
public class ClsA extends BaseCls {

}
//子类2
public class ClsB extends BaseCls {

}
//AOP配置类
//这样写A、B两个类都切到了。
@Before("execution(* com.test.aop.entity.BaseCls.fun())")
public void before_fun(JoinPoint jp){
System.out.println("前置切面运行,当前目标对象为: "+jp.getTarget().getClass());
}
那么如何写才能只为ClsA设置fun()的切面呢?

/************************** 问题2 ***********************************/


<bean id="baseCls" class="com.test.aop.entity.BaseCls" abstract="true"/>
<bean id="clsA" class="com.test.aop.entity.ClsA" scope="prototype"/>
<bean id="clsC" parent="baseCls" scope="prototype"/>


如何写execution(* ???fun()) 才能对映射的clsC设置fun的切点呢?对clsA不要产生影响

...全文
1727 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
firefly21 2010-05-15
  • 打赏
  • 举报
回复
那么基于XML怎么配置呢?给我写一段吧或者加我QQ 290336727 多谢了。
firefly21 2010-05-15
  • 打赏
  • 举报
回复
那么基于XML怎么配置呢?给我写一段吧或者加我QQ 290336727 多谢了。
manynames 2010-05-14
  • 打赏
  • 举报
回复
注解是编译进类的字节码文件上的,如果你没有类,是没办法操作的,只能基于XML配置
manynames 2010-05-14
  • 打赏
  • 举报
回复
额。我算看明白了,只有一个类,要针对单个bean来横切,可以给clsC一个代理,@AspectJ表达式是在类层次上的,
manynames 2010-05-14
  • 打赏
  • 举报
回复
你配了这个,运行的时候肯定就有这个类被动态加载的,你试过了么?
firefly21 2010-05-12
  • 打赏
  • 举报
回复
拜托,给我写几句样例代码 好吗?
manynames 2010-05-12
  • 打赏
  • 举报
回复
直接在clsC的方法上切咯,代理会产生新的clsC的子类型,不会影响到原有基类的其他子类型
firefly21 2010-05-12
  • 打赏
  • 举报
回复
不好意思 clsC 没有实体类 com.test.aop.entity 这个包下没有clsC这个类,我配的是继承<bean id="clsC" parent="baseCls" scope="prototype"/>
manynames 2010-05-12
  • 打赏
  • 举报
回复
在你的方面那里"execution(* com.test.aop.entity.BaseCls.fun())
baseCls改成clsC不就完了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧