java - Spring AOP aspect with annotations is not working for base class -
i have annotation defined below
@target({elementtype.type, elementtype.method}) @retention(retentionpolicy.runtime) @inherited public @interface otpflow { }   and class defined below
public abstract class {   @otpflow   public modelandview dosomething() {     //do , return modelandview   } }   class b controller defined below
@controller @requestmapping(value = {"/someurl"}) public class b extends {   @requestmapping(value = {"/get"}, method = {requestmethod.post, requestmethod.get})   public modelandview get(httpservletrequest request, httpservletresponse response) {     return dosomething();   } }   aspect defined
@component @aspect public class otpaspect { private static final logger logger = loggerfactory.getlogger(otpaspect.class);  @pointcut("@annotation(otpflow)") public void otpflow() {}  @around("otpflow()") public object checkotp(proceedingjoinpoint joinpoint) {     try {         logger.info("inside aspect");         return joinpoint.proceed();     } catch (throwable e) {         throw new runtimeexception(e);     } } }   the problem when access "/someurl/get" url, aspect not execute. when annotate "get" method of class b, aspect executes.
so basically, annotated methods of superclass not invoke aspect.
what issue? there other way achieve this? appreciated. thanks
i want offer alternative m. deinum , marios have said correctly: use aspectj instead of spring aop. aspectj not rely on proxies, faster, more powerful , integrates nicely spring described in spring manual, section 9.8, using aspectj spring applications. aspectj want works out of box.
Comments
Post a Comment