Spring - AOP切面编程

<?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());
        }
    }
}

转载于:https://my.oschina.net/whiteInfo/blog/794446

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值