spring集成aspectj

	<!--支持spring注解-->
	<context:annotation-config />  
	<context:component-scan base-package="xx" />
	<!--支持aspectj注解,注意设置proxy-target-class为true,强制使用cglib-->
	<aop:aspectj-autoproxy proxy-target-class="true"/>


@Aspect
@Component
public class TickLogInterceptorWithAspectJ
{
    public void pointCut()
    {
    }
    
    @Around("execution(* xx..*.CarMaker.make*(..))")
    public Object tick(ProceedingJoinPoint joinPoint)
    {
        System.out.println(MessageFormat.format("enter method: {0}.{1}, params: {2}",
            joinPoint.getSignature().getDeclaringTypeName(),
            joinPoint.getSignature().getName(),
            getParamsString(joinPoint.getArgs())));
            
        try
        {
            Object o = joinPoint.proceed(joinPoint.getArgs());
            
            System.out.println(MessageFormat.format("exit method: {0}.{1}, result: {2}",
                joinPoint.getSignature().getDeclaringTypeName(),
                joinPoint.getSignature().getName(),
                o));
                
            return o;
        }
        catch (Throwable e)
        {
            return null;
        }
    }
    
    private String getParamsString(Object[] params)
    {
        return Joiner.on(",").join(Arrays.asList(params));
    }
}

猜你喜欢

转载自qiangcz.iteye.com/blog/2275093