`
weitao1026
  • 浏览: 1053195 次
  • 性别: 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>  
分享到:
评论

相关推荐

    使用CGLIB模拟spring的拦截器

    在`intercept`方法中,我们实现了类似Spring拦截器的功能,调用`preHandle`和`postHandle`方法,并根据`preHandle`的结果决定是否执行目标方法。 最后,`afterCompletion`方法的调用通常需要手动管理,因为它涉及到...

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

    接下来,描述中提到了"MethodInterceptor",这是Spring AOP中的一种拦截器,用于拦截并修改代理对象的方法调用。不同于HandlerInterceptor,MethodInterceptor是基于代理的AOP,适用于拦截任何由Spring管理的对象,...

    Spring AOP四种创建通知(拦截器)类型

    ### Spring AOP 四种创建通知(拦截器)类型详解 Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要模块,它提供了在应用代码中添加横切关注点的能力,如日志记录、事务管理、权限...

    Spring使用AOP的三个jar包

    它定义了一些通用的AOP接口,比如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.MethodInvocation`,使得不同的AOP框架(如Spring和AspectJ)可以共享相同的拦截器(interceptors)。...

    java 拦截器例子

    Java拦截器(Interceptor)是Java应用开发中一种重要的设计模式,尤其在企业级应用和框架中,如Spring、Struts2、MyBatis等。它主要用于在方法执行前后添加额外的功能,比如日志记录、性能统计、事务管理、权限验证...

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

    - 实现MethodInterceptor:如果需要更细粒度的控制,可以创建一个拦截器,处理事务的开始、提交和回滚。 5. **源码分析**: - 分析`HibernateTransactionManager`的源码可以帮助理解其内部是如何与Hibernate配合...

    Java 中的一个简单的织入织出拦截器的一个简单的例子

    4. **创建拦截器**:在Spring中,我们可以通过实现`MethodInterceptor`接口或者使用`@Aspect`注解来创建拦截器。`MethodInterceptor`是AOP联盟的一部分,而`@Aspect`是AspectJ的注解,用于定义切面。 5. **配置拦截...

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

    总结起来,Spring Boot结合Spring AOP实现拦截器,主要是通过定义切面类,声明拦截规则(切点),然后编写环绕通知,以在方法执行前后插入自定义的行为,如记录日志、检查权限等。这种做法可以有效地解耦业务逻辑和...

    spring_aop_拦截实例

    在Spring AOP中,我们通过定义一个实现了`org.springframework.aop.MethodInterceptor`接口的类来创建自定义拦截器。这个类需要实现`invoke`方法,该方法会在目标方法被调用之前和之后执行。 接下来,我们需要将...

    spring自定义注解实现拦截器的实现方法

    总结起来,通过定义一个自定义注解来标记需要拦截的方法,并通过AOP配置来指定拦截器的执行时机和方法,可以灵活地在Spring MVC应用中添加各种前置处理逻辑,而不影响核心业务代码的清晰和专注。这种方式不仅可以...

    利用spring的拦截器自定义缓存的实现实例代码

    在Spring框架中,拦截器(Interceptor)是一种强大的工具,它允许我们在方法调用前后执行自定义逻辑。在本文中,我们将探讨如何利用Spring的拦截器实现自定义缓存功能,以便提高应用程序性能并减少对数据库的依赖。...

    Spring笔记(第七次)1

    当没有拦截器链时,Spring会直接执行目标方法。否则,它会创建一个`CglibMethodInvocation`对象,将目标对象、目标方法和拦截器链传递进去,并调用`proceed()`方法来触发拦截器链的执行。 拦截器链的工作原理如下:...

    SpringAOP的日志拦截示例

    总结来说,Spring AOP的日志拦截通过定义拦截器、切入点和顾问,可以方便地实现对特定方法的透明日志记录。这个示例中的`LogInterceptor.java`实现了具体拦截逻辑,而`config.xml`则负责配置拦截规则,两者结合实现...

    spring aop实现

    3. MethodInterceptor:这是Spring AOP编程式实现的核心接口,它定义了拦截器链的执行逻辑。每个拦截器都可以在方法调用前后执行额外的操作。 ```java public class MyInterceptor implements MethodInterceptor { ...

    Spring AOP+ehCache简单缓存系统解决方案

    Spring AOP允许我们定义拦截器(Interceptor),这些拦截器会在目标方法执行前后进行干预。在本例中,我们创建了一个名为`MethodCacheInterceptor`的类,它实现了`MethodInterceptor`接口。这个拦截器的主要任务是在...

    Spring开发包含的各种包com.springsource.org.aopalliance-1.0.0.jar

    - `org.aopalliance.intercept.MethodInterceptor`:这是方法拦截器接口,允许开发者在方法调用前后插入自定义逻辑,如日志、事务处理等。 - `org.aopalliance.intercept.Interceptor`:这是一个更通用的拦截器...

    spring-aop-ProxyFactoryBean 源码分析

    在Spring AOP中,拦截器是`MethodInterceptor`接口的实现,而顾问是`Advisor`接口的实现,包括`PointcutAdvisor`(包含切点和拦截器)和`IntroductionAdvisor`(引入新的接口)。`ProxyFactoryBean`可以通过`...

    Spring Aop Advise方法(增强方法) 中获取目标方法的参数

    在Spring AOP(面向切面编程)中,Advise(增强方法)是核心概念之一,它允许我们在不修改原有业务代码的情况下,通过拦截器模式来插入额外的功能或行为。这篇博客文章“Spring Aop Advise方法(增强方法) 中获取目标...

    Spring实现自动代理Demo

    代理对象在执行方法时,会首先调用拦截器,然后才调用实际的目标方法。 三、使用示例 在`springtest`项目中,你可以找到一个简单的例子来演示`BeanNameAutoProxyCreator`的使用。项目中可能包括以下组件: - 一个...

Global site tag (gtag.js) - Google Analytics