AOP日志-前置通知操作

@Component
@Aspect
public class LogAop {

	@Autowired
	private HttpServletRequest request;
	
	@Autowired
	private ISysLogService sysLogService;
	
	private Date startTime; // 访问时间
	
	private Class executionClass;// 访问的类	
	
	private Method executionMethod; // 访问的方法
	
	// 主要获取访问时间、访问的类、访问的方法
	@Before("execution(* com.learn.ssm.controller.*.*(..))")
	public void doBefore(JoinPoint jp) throws NoSuchMethodException, SecurityException {
	
		startTime = new Date(); // 访问时间
		
		// 获取访问的类
		executionClass = jp.getTarget().getClass();
		
		// 获取访问的方法
		String methodName = jp.getSignature().getName();// 获取访问的方法的名称
		
		Object[] args = jp.getArgs();// 获取访问的方法的参数
		
		if (args == null || args.length == 0) {// 无参数
			executionMethod = executionClass.getMethod(methodName); // 只能获取无参数方法
		} else {
			// 有参数,就将args中所有元素遍历,获取对应的Class,装入到一个Class[]
			Class[] classArgs = new Class[args.length];
			for (int i = 0; i < args.length; i++) {
				classArgs[i] = args[i].getClass();
			}
		executionMethod = executionClass.getMethod(methodName, classArgs);// 获取有参数方法
		}
	}		
	
}

发布了2210 篇原创文章 · 获赞 50 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/Leon_Jinhai_Sun/article/details/104458954