<!-- 拦截器1 --> <bean id="user" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces"> <value>com.oys.zexaple.interceptor.IUser</value> </property> <property name="interceptorNames"> <list> <value>loginAdvice</value> </list> </property> <property name="target"> <ref bean="userTarget" /> </property> </bean> <!-- 拦截器2 --> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <value>helloSpeaker</value> <value>helloSpeaker2</value> </list> </property> <property name="interceptorNames"> <list> <value>logInterceptor</value> <value>agumentInterceptor</value> </list> </property> </bean> <!-- 拦截器3 事务 --> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager" ref="transactionManager" /> <property name="transactionAttributes"> <props> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="*">ISOLATION_SERIALIZABLE</prop> </props> </property> </bean> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <value>*Service</value> <value>*DAO</value> </list> </property> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> </list> </property> </bean>
拦截器1:
package com.oys.zexaple.interceptor; import java.lang.reflect.Method; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.springframework.aop.AfterReturningAdvice; import org.springframework.aop.MethodBeforeAdvice; public abstract class BaseAdvice implements MethodBeforeAdvice, MethodInterceptor, AfterReturningAdvice { public void afterReturning(Object returnValue, Method method, Object[] args, Object target) { } public Object invoke(MethodInvocation invocation) throws Throwable { return invocation; } public void before(Method method, Object[] args, Object target) { } }
package com.oys.zexaple.interceptor; public interface IUser { public void Login(String username,String password); }
package com.oys.zexaple.interceptor; import java.lang.reflect.Method; import org.aopalliance.intercept.MethodInvocation; import org.springframework.stereotype.Repository; @Repository("loginAdvice") public class LoginAdvice extends BaseAdvice { @Override public void afterReturning(Object returnValue, Method method, Object[] args, Object target) { System.out.println("---------- 方法名:afterReturning ----------------"); // 将用户登录信息写入日志文件 } @Override public Object invoke(MethodInvocation invocation) throws Throwable { System.out.println("---------- 方法名:invoke ----------------"); String username = invocation.getArguments()[0].toString(); String password = invocation.getArguments()[1].toString(); System.out.println(username+"===="+password); //在这里进行相关的验证操作 return invocation.proceed(); } @Override public void before(Method method, Object[] args, Object target) { System.out.println("---------- 方法名:before ----------------"); String username = (String) args[0]; String passowrd = (String) args[1]; // 在这里进行数据库查找操作 } }
package com.oys.zexaple.interceptor; import org.springframework.stereotype.Repository; @Repository("userTarget") public class UserImpl implements IUser { public void Login(String username, String password) { System.out.println("----------方法名:Login ----------------"); } }
拦截器2
package com.oys.zexaple.interceptor2; import org.springframework.stereotype.Service; @Service("helloSpeaker") public class HelloSpeaker implements IHello { public void sayHello(String name) { System.out.println("Hello," + name); } }
package com.oys.zexaple.interceptor2; import org.springframework.stereotype.Service; @Service("helloSpeaker2") public class HelloSpeaker2 implements IHello { public void sayHello(String name) { System.out.println("Welcome to world," + name); } }
package com.oys.zexaple.interceptor2; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.springframework.stereotype.Service; @Service("agumentInterceptor") public class InterceptorForAgument implements MethodInterceptor { public Object invoke(MethodInvocation methodInvocation) throws Throwable { String name = null; Object[] args = methodInvocation.getArguments(); for (int i = 0; i < args.length; i++) { if (args[i] instanceof String) { name = (String) args[i]; } } System.out.println("the argument is : " + name); Object result = methodInvocation.proceed(); System.out.println("the argument is proceed"); return result; } }
package com.oys.zexaple.interceptor2; public interface IHello { public void sayHello(String name); }
package com.oys.zexaple.interceptor2; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.springframework.stereotype.Service; @Service("logInterceptor") public class InterceptorForLog implements MethodInterceptor { public Object invoke(MethodInvocation methodInvocation) throws Throwable { System.out.println("Log start..."); Object result = null; result = methodInvocation.proceed(); System.out.println("Log end..."); return result; } }
测试代码:
package test; import java.util.List; import javax.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.oys.base.domain.User; import com.oys.base.service.UserService; import com.oys.zexaple.aop.AServiceImpl; import com.oys.zexaple.aop.BServiceImpl; import com.oys.zexaple.interceptor.IUser; import com.oys.zexaple.interceptor2.IHello; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:conf/applicationContext.xml" }) //@ContextConfiguration(locations="classpath:conf/applicationContext.xml") // 加载配置 public class TestServiceTest { @Resource private UserService userService; @Autowired private IUser user; @Autowired private BServiceImpl bService; @Autowired private AServiceImpl aService; @Resource private IHello helloSpeaker; @Test public void findAllUser() { List<User> list=userService.findAllUser(); System.out.println(list.size()); } @Test public void testaop1(){ } @Test public void testaop2(){ bService.barB("msg", "type"); System.out.println("----------------------"); aService.barA(); } @Test public void interceptors(){ user.Login("username", "123456"); } @Test public void interceptors2(){ helloSpeaker.sayHello("longyg"); } }
相关推荐
下面将详细探讨Spring拦截器的使用以及高级参数绑定和Controller返回值的相关知识。 首先,我们创建一个Spring拦截器需要实现HandlerInterceptor接口或继承HandlerInterceptorAdapter抽象类。以下是一个简单的拦截...
在深入研究Flex-Spring拦截器时,理解Spring AOP的核心概念和AMF的工作原理是至关重要的。通过这样的集成,开发者可以在保持Flex客户端的灵活性和交互性的同时,利用Spring的强大功能来处理复杂的业务逻辑和系统管理...
Spring 拦截器是 Spring 框架中一个非常重要的组件,主要用于处理请求和响应,实现业务逻辑之前和之后的预处理和后处理。它为开发者提供了在 MVC 模式下实现统一处理机制的机会,比如权限验证、日志记录、性能监控等...
而Spring拦截器则是实现AOP的一种方式,它类似于Java的Servlet过滤器,可以在方法调用前后执行自定义的操作。 AOP拦截器在Spring中主要通过`HandlerInterceptor`接口或者`@AspectJ`注解来实现。下面我们将详细探讨...
本文将深入探讨Spring拦截器的一个简单实例,通过源码分析和实际操作,帮助你理解其工作原理。 首先,我们需要了解Spring MVC的处理流程。当一个HTTP请求到达服务器时,Spring MVC会按照配置的DispatcherServlet...
Spring 拦截器是 Spring AOP(面向切面编程)的一个重要组成部分,它允许开发者在方法调用前后插入自定义的行为。在这个简单的例子中,我们将深入理解如何配置和使用 Spring 的拦截器来实现特定的功能。 首先,我们...
在`intercept`方法中,我们实现了类似Spring拦截器的功能,调用`preHandle`和`postHandle`方法,并根据`preHandle`的结果决定是否执行目标方法。 最后,`afterCompletion`方法的调用通常需要手动管理,因为它涉及到...
在本次的“spring MVC(新增拦截器demo)”项目中,我们将重点探讨如何在Spring MVC中添加拦截器来实现对请求的预处理和后处理。 拦截器在Spring MVC中扮演着关键的角色,它们可以用来执行一些全局性的任务,如日志...
这将设置Spring Web相关类的日志级别为DEBUG,以便我们能看到拦截器的执行过程。 启动类通常会包含`@SpringBootApplication`注解,该注解包含了`@EnableAutoConfiguration`,`@ComponentScan`和`@...
Spring Boot提供了对Spring MVC的集成,因此我们可以利用Spring MVC的拦截器机制来实现这些功能。 首先,让我们了解一下Spring Boot中创建拦截器的基本步骤: 1. 创建自定义拦截器类:你需要创建一个实现了`...
Spring拦截器HandlerInterceptor接口代码解析 Spring拦截器HandlerInterceptor接口代码解析是Spring框架中的一种重要机制,它允许开发者在请求处理过程中执行自定义逻辑,以达到验证、日志记录、性能监控、安全检查...
在Spring Boot应用中,登录拦截器是一个至关重要的组件,它用于保护特定的Web资源,确保只有经过身份验证的用户才能访问。Spring Boot结合了Spring MVC框架,提供了方便的方式来实现这样的拦截器。本篇文章将深入...
### Spring AOP 四种创建通知(拦截器)类型详解 Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要模块,它提供了在应用代码中添加横切关注点的能力,如日志记录、事务管理、权限...
### 使用Spring拦截器实现日志管理实例 在Web应用程序中,日志管理是至关重要的,它可以帮助开发者跟踪和诊断系统中的问题。Spring框架提供了一种优雅的方式来实现这一目标,即通过使用`HandlerInterceptor`接口...
在Spring Boot中注册拦截器,我们需要在配置类中使用`@EnableAspectJAutoProxy`开启AOP代理,并通过`@Bean`注解声明拦截器实例。然后,使用`@Around`注解定义切点,即拦截所有的JPA操作。 在实际开发中,为了使分库...
在Spring Boot应用中,拦截器(Interceptor)是Spring MVC框架的一部分,用于在请求处理之前、之后或在实际处理过程中执行一些预定义的任务。这通常包括权限检查、日志记录、性能监控等。自定义拦截器可以帮助我们更...
标题中的“spring配置JSON拦截器VIEW”指的是在Spring框架中设置JSON数据的处理方式,特别是通过拦截器(Interceptor)来优化视图层(View)的响应。在Web开发中,拦截器是一种常用的机制,用于在请求被实际处理之前...
Spring MVC拦截器是Spring Web框架的一个重要组成部分,它允许开发者在处理请求之前或之后执行自定义的操作,例如权限校验、日志记录等。在本篇文章中,我们详细探讨了如何通过Spring MVC拦截器实现session的控制,...
Spring AOP 拦截器 Advisor 是 Spring 框架中的一个重要概念,它与切面编程密切相关,用于实现细粒度的控制和增强应用程序的行为。在 Spring AOP 中,Advisor 是一个组合了通知(Advice)和切入点(Pointcut)的对象...
3. **Spring集成**:在Spring3.2中,我们可以使用`<cxf:bus>`和`<cxf:interceptor>`标签将自定义拦截器注册到CXF Bus中。这样,Spring容器会管理拦截器的生命周期,并在需要时注入其他依赖。 4. **拦截器链**:CXF...