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

问题描述

多谢高手回复,在线等。。。。/**************************问题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多谢了。

时间: 2024-12-24 21:37:18

Spring AOP能不能对子类做 父类方法的切点?的相关文章

子类调用父类方法的问题

问题描述 子类调用父类方法的问题 父类: package com.example.main;public class Parent { public void print(){ System.out.println(this); }} 子类: package com.example.main;public class Childer extends Parent { public static void main(String[] args) { new Childer().print(); }

super-为什么子类重写父类方法之后还要调用父类同名方法

问题描述 为什么子类重写父类方法之后还要调用父类同名方法 为什么子类重写父类方法之后还要调用父类同名方法 比如public class A extends B { public void say ( ) { super.say ( ); } 为什么重写父类方法之后还要在方法体里面用super关键词调用父类的同名方法呢 解决方案 你可以不调用,这个你自定,不是必须 解决方案二: SubClasing用法--子类重写父类方法,父类直接调用实现方式子类调用父类方法子类调用父类方法 解决方案三: 我想到

请教一下各路大神,C#中关于子类隐藏父类方法或属性的问题

问题描述 请教一下各路大神,C#中关于子类隐藏父类方法或属性的问题 比如说基类A有个方法 print(){}; A的子类B也有个方法print(){}; 那么,在B类中用修饰符new将父类中的该方法隐藏掉有什么意义 不隐藏有什么弊端么 解决方案 有个C#语法的问题吧,子类如果要重写父类的方法的话,virtual-override一定成对的. 子类不重写,而是创建一个属于自己的同名方法,就最好加个new咯. 如果不加new也等于new,但是编译器都会提醒你,加个标识比较好. 区别就是, class

java-关于android子类重写父类方法,方法体里面的方法的问题

问题描述 关于android子类重写父类方法,方法体里面的方法的问题 android中子类重写父类Activity方法,在onCreate这个方法的方法体里面有个setContentView方法,这个方法是调用外部方法吗,为什么前面没加this关键词,不是说方法的方法体里面调用外部方法要加this关键词,加了没加有什么区别 解决方案 不是调用外部方法,这是调用父类Activity中的方法 解决方案二: 子类重写父类的方法应注意的问题java 子类重写父类的方法应注意的问题java 子类重写父类的

Python子类调用父类方法学习笔记

python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法.如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问,但是该方法或属性在子类中并不存在,那么就会自动的去其父类中进行查找. 继承父类后,就能调用父类方法和访问父类属性,而要完成整个集成过程,子类是需要调用的构造函数的. 子类不显式调用父类的构造方法,而父类构造函数初始化了一些属性,就会出现问题 如果子类和父类都有构造函数,子类其实是重写了父类的构造函数,如果不显式调用父类构造函数,父

Python子类调用父类方法实例程序

python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法.如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问,但是该方法或属性在子类中并不存在,那么就会自动的去其父类中进行查找. 继承父类后,就能调用父类方法和访问父类属性,而要完成整个集成过程,子类是需要调用的构造函数的. 子类不显式调用父类的构造方法,而父类构造函数初始化了一些属性,就会出现问题 如果子类和父类都有构造函数,子类其实是重写了父类的构造函数,如果不显式调用父类构造函数,父

java-Java中子类实例可以调用父类方法吗

问题描述 Java中子类实例可以调用父类方法吗 20C 通常情况子类覆写父类方法如果是构造函数,直接用super()如果是普通方法用super.method() 但是如果创建了子类实例,比如A类中覆写了Object的equals()方法A a = new A();a怎么调用Object的equals()方法 A没有显示继承其他类 解决方案 PHP类中子类调用父类方法java中子类继承父类方法及调用规则java中子类,父类的方法调用及属性值 解决方案二: 因为你A类中重写了equals方法了,所以

反编译-子类调用父类的泛型方法,为何不用强转就能得到正确的类型,父类编译的时候不是泛型擦出了吗?

问题描述 子类调用父类的泛型方法,为何不用强转就能得到正确的类型,父类编译的时候不是泛型擦出了吗? 以下面这个简单例子演示: 这是父类 public abstract class GenericFather<T> { public T getT(T t){ return t; } } 通过反编译可以得知编译后泛型擦出,T都用Object代替了 也就是说只要调用父类方法最后肯定返回的是个Object类型 public abstract class GenericFather { public G

关于spring子类实现父类protected方法导致实例化出错的问题

问题描述 关于spring子类实现父类protected方法导致实例化出错的问题 子类实现的抽象方法中引用子类自身的public方法(详细请参看测试Demo),导致报错 父类AbstractBusiness为抽象类 public abstract class AbstractBusiness { public void execute(){ check(); doBusiness(); } protected abstract void check(); protected abstract v