`
weitao1026
  • 浏览: 1001081 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring方法拦截器 MethodInterceptor

阅读更多
使用到spring方法拦截器 MethodInterceptor实现权限控制,MethodInterceptor可以使用通配符,并且是基于注解的。

简单例子代码如下:

1、定义需要拦截的类


Java代码  收藏代码

    public class LoginAction{ 
        
        //没有权限限制 
        @RequestMapping(value = "/login") 
        public void login(HttpServletRequest req, HttpServletResponse res) { 
               //登录功能. 
       } 
     
       //需要登录完成后才可访问 
       @LoginMethod 
       @RequestMapping(value = "/userList") 
        public void userList(HttpServletRequest req, HttpServletResponse res) { 
               //获取用户列表 
       } 
     
    } 

注意上面的@LoginMethod是我自定义的注解





2、定义LoginMethod注解
Java代码  收藏代码

    @Target(ElementType.METHOD) 
    @Retention(RetentionPolicy.RUNTIME) 
    public @interface LoginMethod { 
        
    } 

3、定义MethodInterceptor拦截器
Java代码  收藏代码

    public class SystemMethodInterceptor implements MethodInterceptor { 
        @Override 
        public Object invoke(MethodInvocation methodInvocation) throws Throwable {        
            Method method = methodInvocation.getMethod();    
            if(method.isAnnotationPresent(LoginMethod.class)){//加了@LoginMethod注解,被拦截 
                 User user = sessionUtil.getCurrUser(); 
                 if(user == null){//未登录 
                     //proceed方法不调用,方法被拦截 
                     return null; 
                 }else{ 
                     return methodInvocation.proceed();//该方法不调用,则被拦截的方法不会被执行 
                 } 
            }else{ 
                return methodInvocation.proceed(); 
            } 
        } 
    } 



4、配置文
Xml代码  收藏代码

    <bean id="systemMethodInterceptor" class="com.tzz.interceptor.SystemMethodInterceptor" > 
    </bean> 
    <aop:config>  
    <!--切入点-->  
     <aop:pointcut id="methodPoint" expression="execution(* com.tzz.controllor.web.*.*(..)) "/><!--在该切入点使用自定义拦截器-->  
    <aop:advisor pointcut-ref="methodPoint" advice-ref="systemMethodInterceptor"/> 
    </aop:config>  
分享到:
评论

相关推荐

    Spring Boot Aspect 切面 AOP 拦截器 Interceptor 监控control请求耗时

    常用拦截 拦截器HandlerInterceptor 拦截器MethodInterceptor 添加依赖 创建启动类 创建拦截器类 创建控制器 监控control请求耗时,提高性能

    spring boot如何使用spring AOP实现拦截器

    本篇文章主要介绍了spring boot如何使用spring AOP实现拦截器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    org/aopalliance/intercept/MethodInterceptor 类 fro Spring3.0

    nested exception is java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor 就是少了这个包

    Spring笔记说明文件

    2)、事务拦截器: TransactionInterceptor;保存了事务属性信息,事务管理器; 他是一个 MethodInterceptor; 在目标方法执行的时候; 执行拦截器链; 事务拦截器: 1)、先获取事务相关的属性 2)、再获取...

    spring aop实现

    spring,aop的实现.MethodBeforeAdvice,AfterReturningAdvice,MethodInterceptor等。

    spring,hibernate整合实现事务管理(MethodInterceptor)

    NULL 博文链接:https://88548886.iteye.com/blog/1528486

    Spring.net框架

    在上面这段代码中,重点注意三条命令的使用方法: assembly = Assembly.LoadFile(rootPath + prop.assemblyName); p = assembly.CreateInstance(prop.typeName); t.InvokeMember(prop.propertyName, BindingFlags....

    spring aop 实现源代码--xml and annotation(带lib包)

    正如上面所示,在MethodInterceptor中你得自行决定是否调用MethodInvocation的proceed()方法来执行目标对象上的方法,proceed()方法在执行完后会返回目标对象上方法的执行结果。 MethodInterceptor在XML文件中的定义...

    aopalliance-1.0.jar

    AOP联盟为Java的AOP提供了一系列标准接口,包括Advice通知及其继承接口MethodInterceptor方法拦截器,还有JointPoint连接点及其继承接口MethodInvocation。例如,很多具有AOP概念的框架如Spring AOP都会依赖于此来...

    thrift-spring-http代码实例

    本文借鉴spring对hessian的支持,实现spring对Thrift的支持。服务端主要使用了spring的HttpRequestHandler接口...客户端主要使用spring的MethodInterceptor和UrlBasedRemoteAccessor以及代理来实现对服务端的远程调用。

    springAOP demo 带错误解决文档

    在搭建spring项目时通常需要这些jar包 commons-logging-1.1.3.jar spring-aop-4.0.6.RELEASE.jar ... nested exception is java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor

    类似spring Aop的Proxy封装

    有一天在用回调模版的时候,忽然间又想到jdk自带的Proxy类似乎不是怎么好用,为何不把其做成回调模版呢,可以将其改造称类似spring Aop 代码如下: package com.fjx.proxy.up.test; import ...

    代理模式所需的jar包—cglib.rar

    cglib动态代理 使用步骤: Step1:实现MethodInterceptor接口 Step2:创建方法对目标进行代理 Step3:重写intercept方法对代理目标方法进行拦截

    Java Web程序设计教程

    6.1.2拦截器及拦截器栈的应用 111 6.1.3自定义拦截器 115 6.2类型转换器 117 6.2.1struts2内置类型转换器 117 6.2.2引用类型的转换方式 117 6.2.3特殊对象的类型转换 118 6.2.4类型转换的错误处理 121 6.3...

    13Spring知识点1

    反射:动态代理设计模式 1.jdk 依赖接口 newProxyInstance方法 2.cglb 实现MethodInterceptor Aop 四种通知之前通

    spring aop 实例

    spring aop 四种模式 1、AfterReturningAdvice 2、MethodInterceptor 3、MethodBeforeAdvice 4、ThrowsAdvice

    Spring如何基于Proxy及cglib实现动态代理

    主要介绍了Spring如何基于Proxy及cglib实现动态代理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    java设计模式【之】Cglib动态代理【源码】【场景:帮爸爸买菜】

    * 代理类需要实现 MethodInterceptor(方法拦截器) * * 1.创建被代理类、创建代理类、代理类内部聚合被代理类 * 2.创建返回代理类实例方法 Enhancer.create(object.getClass(), this); * (1.创建工具类,2....

    java8源码-springboot_gradle_demos:spring-bootgradle演示

    java8 源码 所有项目demo都基于idea gradle + SpringBoot来开发构建 ...@Around:环绕增强,相当于MethodInterceptor @AfterReturning:后置增强,相当于AfterReturningAdvice,方法正常退出时执行 @Before

    java中的0 can‘t find referenced pointcut runTim

    @Around: 环绕增强,相当于MethodInterceptor. 这里Around的value参数应该写的是上面的签名,而不是runTime,如果@Around 参数值里 “@annotation (timeCost)" 是为了匹配 costTimeAround 方法的入参 timeCost,...

Global site tag (gtag.js) - Google Analytics