AOP: java.lang.IllegalArgumentException: erro em :: 0 não pode encontrar o pointcut referenciado
Eu sou novo em AOP. Eu tenho algum problema assim.
<code>package org.suman.Aspect; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; @Aspect public class LoginAspect { //@Before("execution(public String getName())") //@Before("execution(public String org.suman.Model.Triangle.getName())") //@Before("execution(* get*())") //@Before("execution(* get*(..))") //@Before("execution(* org.suman.Model.*.get*())") //@Before("execution(* get*())&& within(org.suman.Model.Circle)") @Before("execution(* get*())&& allCircle()") //@Before("allGetters() && allCircle()") public void LoginAdvice() { System.out.println("Advice run.. getMethod is called"); } @Before("execution(* get*())") //@Before("allGetters()") public void SecondAdvice() { System.out.println("this is a second Advice"); } @Pointcut("execution(* get*())") public void allGetters(){} //@Pointcut("execution (* * org.suman.Model.Circle.*(..))") @Pointcut("within(org.suman.Model.Circle)") public void allCircle(){} } </code>
quando usando pointcut, o método allGetters () para o método LoginAdvice, se eu usar @Before ("execução (* get * ())") então nenhum erro mas se eu usar @Before ("allGetters ()") então dá erro " java.lang.IllegalArgumentException: erro em: 0 não pode encontrar o pointcut referenciado allGetters
Se eu usar @Before ("execução (* get * ()) && dentro (org.suman.Model.Circle)") em vez do nome do método funciona.
Meu xml assim:
<code><?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <!-- <context:annotation-config /> --> <aop:aspectj-autoproxy /> <bean name="triangle" class="org.suman.Model.Triangle"> <property name="name" value="Triangle Name"></property> </bean> <bean name="circle" class="org.suman.Model.Circle"> <property name="name" value="Circle name"></property> </bean> <bean name="shapeService" class="org.suman.Services.ShapeService" autowire="byName"></bean> <bean name="loginAspect" class="org.suman.Aspect.LoginAspect"></bean> </beans> </code>
Por favor, resolva o problema com o ponto de corte pelo qual é preciso método