Spring apo aspect管理日志

applicationContext.xml中写入:

<!-- 启动对@AspectJ注解的支持 -->
<aop:aspectj-autoproxy proxy-target-class="true"/>
<bean id="logAspect" class="com.dailywork.aop.LogAspect"></bean>

LogAspect.java中写入:

package com.dailywork.aop;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class LogAspect {

	/*@Before(value = "execution(public * com.dailywork.service..*.*(..))")
	public void beforeShow() {
		System.out.println("before show.");
	}

	@After(value = "execution(public * com.dailywork.service..*.*(..))")
	public void afterShow() {
		System.out.println("after show.");
	}*/

	@Pointcut("execution(* com.dailywork.service..*.*(..))")
	public void serviceCall() {}

	@Before("serviceCall()")
	public void logInfo(JoinPoint jp) {
		String className = jp.getThis().toString();
		String methodName = jp.getSignature().getName(); // 获得方法名
		System.out.println("=====================================");
		System.out.println("====位于:" + className);
		System.out.println("====调用" + methodName + "方法-开始!");
		Object[] args = jp.getArgs(); // 获得参数列表
		if (args.length <= 0) {
			System.out.println("====" + methodName + "方法没有参数");
		} else {
			for (int i = 0; i < args.length; i++) {
				System.out.println("====参数  " + (i + 1) + ":" + args[i]);
			}
		}
		System.out.println("=====================================");
	}

	@After("serviceCall()")
	public void logInfoAfter(JoinPoint jp) {
		System.out.println("=====================================");
		System.out.println("====" + jp.getSignature().getName() + "方法-结束!");
		System.out.println("=====================================");
	}

}


你可能感兴趣的:(Spring apo aspect管理日志)