Я прокомментировал:
Если вы действительно используете AspectJ (например, через конфигурацию ткачества во время загрузки), а не Spring AOP, он работает как вы sh. Если это не работает, вы не используете AspectJ. Это так просто. Если вы хотите оспорить мое утверждение, просто предоставьте MCVE вкл. Maven POM и в идеале на GitHub, так что я могу просто клонировать и запустить приложение, например, через Spring Boot. Кстати, чтобы сделать это с POJO, вам совсем не нужен Spring. Я проверил ваш код вне Spring.
Чтобы поддержать мое утверждение, вот мой MCVE, использующий POJOs + AspectJ:
Базовый класс (почему-то абстрактный, потому что там не являются абстрактными методами):
package de.scrum_master.app;
public abstract class ClassB {
public String extendedClassMethod1(String testString, Integer testInteger) {
return testString + " / " + testInteger.toString();
}
public String extendedClassMethod2(String testString, Integer testInteger) {
return testString + " / " + testInteger.toString();
}
}
(Бетон) подкласс:
package de.scrum_master.app;
public class ClassA extends ClassB {
public void testMethod(String testString, Integer testInt) {
extendedClassMethod1(testString, testInt);
extendedClassMethod2(testString, testInt);
}
}
Приложение драйвера:
package de.scrum_master.app;
public class Application {
public static void main(String[] args) {
ClassA classA = new ClassA();
classA.extendedClassMethod1("eleven", 11);
classA.extendedClassMethod2("twenty-two", 22);
classA.testMethod("thirty-three", 33);
}
}
Формат:
package de.scrum_master.aspect;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
@Aspect
public class AspectClass {
@AfterReturning(
value = "execution(* de.scrum_master.app.ClassB.*(..)) && args(testString, testInteger)",
returning = "result"
)
public void aspectMethod(JoinPoint joinPoint, String testString, Integer testInteger, String result) {
System.out.println(joinPoint);
System.out.println(" testString = " + testString);
System.out.println(" testInteger = " + testInteger);
System.out.println(" result = " + result);
}
}
Журнал консоли:
execution(String de.scrum_master.app.ClassB.extendedClassMethod1(String, Integer))
testString = eleven
testInteger = 11
result = eleven / 11
execution(String de.scrum_master.app.ClassB.extendedClassMethod2(String, Integer))
testString = twenty-two
testInteger = 22
result = twenty-two / 22
execution(String de.scrum_master.app.ClassB.extendedClassMethod1(String, Integer))
testString = thirty-three
testInteger = 33
result = thirty-three / 33
execution(String de.scrum_master.app.ClassB.extendedClassMethod2(String, Integer))
testString = thirty-three
testInteger = 33
result = thirty-three / 33