Spring AOP для entity
От: purser Россия  
Дата: 15.01.15 13:41
Оценка:
Имеется два бина:
<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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd ">
 
    <aop:aspectj-autoproxy />
 
    <bean id="customerBo" class="com.mkyong.customer.bo.impl.CustomerBoImpl" />
 
    <!-- Aspect -->
    <bean id="logAspect" class="com.mkyong.aspect.LoggingAspect" />
 
</beans>


@Aspect
public class LoggingAspect {
   @Around("execution(* com.mkyong.customer.bo.CustomerBo.addCustomerAround(..))")
   public void logAround(ProceedingJoinPoint joinPoint) throws Throwable {
 
    System.out.println("logAround() is running!");
    System.out.println("hijacked method : " + joinPoint.getSignature().getName());
    System.out.println("hijacked arguments : " + Arrays.toString(joinPoint.getArgs()));
 
    System.out.println("Around before is running!");
    joinPoint.proceed(); //continue on the intercepted method
    System.out.println("Around after is running!");
 
    System.out.println("******");
   }
}

public class CustomerBoImpl{
     public void addCustomer(){
        System.out.println("addCustomer() is running ");
    }
     public String addCustomerReturnValue(){
        System.out.println("addCustomerReturnValue() is running ");
        return "abc";
    }
     public void addCustomerThrowException() throws Exception {
        System.out.println("addCustomerThrowException() is running ");
        throw new Exception("Generic Error");
    }
     public void addCustomerAround(String name){
        System.out.println("addCustomerAround() is running, args : " + name);
    }
}


Дальше я убеждаюсь, что LoggingAspect перехватывает addCustomer():
CustomerBo customer = (CustomerBo) appContext.getBean("customerBo");
customer.addCustomer();

Как заставить LoggingAspect перехватывал методы в таком коде:
CustomerBo customer = new CustomerBoImpl();
customer.addCustomerAround(“mkyong”);//здесь пока не работает(

Пример взят отсюда
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.