首页 > 其他 > 详细

参考Shiro的自定义AOP横切模式

时间:2018-05-21 10:52:44      阅读:197      评论:0      收藏:0      [点我收藏+]

调用Demo

package com.wjz.demo;

import org.springframework.aop.framework.ProxyFactory;

import com.wjz.spring.CustomPointcutAdvisor;

public class AopDemo {

    public static void main(String[] args) {
        ProxyFactory proxyFactory = new ProxyFactory();
        proxyFactory.addAdvisors(new CustomPointcutAdvisor());
        proxyFactory.setTarget(new Foo());
        Foo fooProxy = (Foo) proxyFactory.getProxy();
        fooProxy.foo("wjz");
    }
}

PointcutAdvisor切入点

package com.wjz.spring;

import java.lang.reflect.Method;

import org.springframework.aop.support.StaticMethodMatcherPointcutAdvisor;

/**
 * 自定义方法切入点
 * @author wjz
 *
 */
@SuppressWarnings("serial")
public class CustomPointcutAdvisor extends StaticMethodMatcherPointcutAdvisor {

    public CustomPointcutAdvisor() {
        setAdvice(new CustomMethodInterceptor());
    }
    
    @Override
    public boolean matches(Method method, Class<?> targetClass) {
        if ("foo".equals(method.getName())) {
            return true;
        }
        return false;
    }

}

MethodInterceptor方法拦截器

package com.wjz.spring;

import java.lang.reflect.Method;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

/**
 * 自定义方法拦截器
 * @author wjz
 *
 */
public class CustomMethodInterceptor implements MethodInterceptor {

    @Override
    public Object invoke(MethodInvocation invocation) throws Throwable {
        System.out.println("invoke method before");
        
        Object arg = invocation.getArguments()[0];
        System.out.println("arg " + arg);
        
        Object ti = invocation.getThis();
        System.out.println("this " + ti);
        
        Method method = invocation.getMethod();
        System.out.println("method " + method);
        
        System.out.println("toString " + toString());
        
        Object result = invocation.proceed();
        System.out.println("invoke method after");
        return result;
    }

}

 

参考Shiro的自定义AOP横切模式

原文:https://www.cnblogs.com/BINGJJFLY/p/9065798.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!