`

spring方法拦截器 MethodInterceptor 配置

阅读更多

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

简单例子代码如下:

1、定义需要拦截的类

 

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注解

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

3、定义MethodInterceptor拦截器

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、配置文

<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 中的一个简单的织入织出拦截器的一个简单的例子

    5. **配置拦截器**:配置拦截器通常是通过Spring的配置文件(XML)或使用Java配置类完成的。我们需要定义一个`Pointcut`来指定哪些方法应该被拦截,然后将拦截器关联到这个`Pointcut`。 6. **运行示例**:在...

    Spring之AOP配置文件详解

    从上述配置可以看出,Spring AOP主要是通过`ProxyFactoryBean`来创建代理对象,通过配置不同的拦截器来实现对目标对象方法的增强。这种配置方式非常灵活,可以根据实际需求动态地添加或修改拦截器,从而实现特定的...

    spring_aop_拦截实例

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

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

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

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

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

    SpringAOP的日志拦截示例

    接下来,我们需要在Spring的配置文件中声明并启用这个拦截器。假设我们的配置文件名为`config.xml`,内容可能如下: ```xml &lt;!-- 定义切入点表达式,例如拦截所有以'service'开头的包下的所有方法 --&gt; (* ...

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

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

    Spring笔记(第七次)1

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

    spring aop实现

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

    Spring实现自动代理Demo

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

    spring-aop-ProxyFactoryBean 源码分析

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics