AOP: java.lang.IllegalArgumentException: błąd w :: 0 nie może znaleźć odnośnika
Jestem nowy w AOP. Mam taki problem.
<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>
gdy używasz pointcut, metoda allGetters () do metody LoginAdvice, jeśli używam @Before („wykonanie (* get * ())”), wtedy nie ma błędu, ale jeśli użyję @Before („allGetters ()”), wtedy pojawia się błąd ” java.lang.IllegalArgumentException: błąd w :: 0 nie może znaleźć przywoływanego pointcut allGetters
jeśli używam @Before (wykonanie (* get * ()) && within (org.suman.Model.Circle) ”) zamiast nazwy metody to działa.
Mój xml w ten sposób:
<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>
Rozwiąż problem z punktami, przez które pobiera metodę