Sto utilizzando AOP per la prima volta. Ho scritto il codice AOP qui sotto che funziona bene quando lo uso per intercettare un particolare metodo.AOP per tutti i metodi in un pacchetto
Qualcuno può guidarmi: come posso configurarlo per intercettare tutti i metodi in un determinato pacchetto (com.test.model)?
Fondamentalmente come configurare appcontext.xml.
Inoltre, devo fare qualcosa di simile per chiamare prima di chiamare ogni metodo?
AopClass aoptest = (AopClass) _applicationContext.getBean("AopClass");
aoptest.addCustomerAround("dummy");
Qualcuno può aiutare?
Per favore fammi sapere se sono necessarie ulteriori spiegazioni.
Qui di seguito è il mio codice:
Interfaccia:
package com.test.model;
import org.springframework.beans.factory.annotation.Autowired;
public interface AopInterface {
@Autowired
void addCustomerAround(String name);
}
Classe:
package com.test.model;
import com.test.model.AopInterface;
import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Autowired;
@Component
public class AopClass implements AopInterface {
public void addCustomerAround(String name){
System.out.println("addCustomerAround() is running, args : " + name);
}
}
AOP:
package com.test.model;
import java.util.Arrays;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class TestAdvice{
@Around("execution(* com.test.model.AopInterface.addCustomerAround(..))")
public void testAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("testAdvice() is running!");
}
}
appcontext:
<!-- Aspect -->
<aop:aspectj-autoproxy />
<bean id="AopClass" class="com.test.model.AopClass" />
<bean id="TestAdvice" class="com.test.model.TestAdvice" />