<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd" default-autowire="byName" default-lazy-init="true"> <bean id="oplogAop" class="com.system.wb.oplog.aop.OplogAop"> <property name="appKey" value="order"></property> </bean> <aop:config> <aop:aspect id="oplogAopAspect" ref="oplogAop"> <aop:pointcut id="order-wb" expression="execution(* com.system.wb.web.module..*.*(..))" /> <aop:before method="beforeSendOpLog" pointcut-ref="order-wb" /> </aop:aspect> </aop:config> </beans>
import org.aspectj.lang.JoinPoint; public class OplogAop { private String appKey; public String getAppKey() { return appKey; } public void setAppKey(String appKey) { this.appKey = appKey; } /** * beforeSendOpLog * @param pjp before */ public void beforeSendOpLog(JoinPoint pjp) { try { //只有线上记录oplog if (!EnvironmentUtil.Env.Pre.equals(EnvironmentUtil.getEnv()) && !EnvironmentUtil.Env.Product.equals(EnvironmentUtil.getEnv())) { return; } OplogAnnotation oplogAnn = null; //获取到这个类上面的方法全名 Method meths[] = pjp.getSignature().getDeclaringType().getMethods(); //获取到这个类上面的方法上面的注释 Annotation[] anns = meths[0].getDeclaredAnnotations(); for (Annotation ann : anns) { if (ann instanceof OplogAnnotation) { oplogAnn = (OplogAnnotation) ann; break; } } //TODO do Somethings } catch (Exception e) { logger.error("OplogAop beforeSendOpLog error:" + e.getMessage()); } } }