Tôi mới sử dụng AOP. Tôi có một số vấn đề như thế này.AOP: java.lang.IllegalArgumentException: lỗi tại :: 0 không thể tìm thấy điểm tham chiếu
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(){}
}
khi sử dụng pointcut, các allGetters phương pháp() để phương pháp LoginAdvice, nếu tôi sử dụng @Before ("thực thi (* get *())") sau đó không có lỗi nhưng nếu tôi sử dụng @Before ("allGetters () ") sau đó mang lại cho lỗi" java.lang.IllegalArgumentException: lỗi tại :: 0 allGetters pointcut không thể tìm thấy tham chiếu
nếu tôi sử dụng @Before ("thực thi (* get *()) & & trong (org. suman.Model.Circle) ") thay vì tên phương thức hoạt động.
My xml like this:
<?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>
Hãy giải quyết vấn đề với pointcut mà phải mất phương pháp
Đối với những người đã đến chủ đề này và không có giải pháp được đề xuất nào trên trang này hoạt động, hãy thử xem xét tại đây: https://stackoverflow.com/questions/21279716/error-at-0-cant-find-referenced chú thích -pointcut – rj2700