转自:
http://blog.csdn.net/yirentianran/article/details/3380529
今天在SSH中用到spring拦截器,所以先在一个只有spring的测试项目中写了一个拦截器的一个简单例子,
结果还遇到了一点小错误,一下就按时间发展顺序记述.
Purview接口.
1. package aop;
2.
3. public interface Purview {
4. void checkLogin();
5. }
PurviesImpl类,Purview接口的实现类.
1. package aop;
2.
3. public class PurviewImpl implements Purview {
4.
5. public void checkLogin() {
6. System.out.println("This is checkLogin method!");
7. }
8. }
9.
PurviewAdvice类,拦截器类.
1. package aop;
2.
3. import java.lang.reflect.Method;
4. import org.springframework.aop.MethodBeforeAdvice;
5.
6. public class PurviewAdvice implements MethodBeforeAdvice {
7. public void before(Method arg0, Object[] arg1, Object arg2)
8. throws Throwable {
9. System.out.println("This is before method!");
10. }
11. }
12.
Test类,测试类.
1. package aop;
2.
3. import org.springframework.context.ApplicationContext;
4. import org.springframework.context.support.ClassPathXmlApplicationContext;
5.
6. public class Test {
7. public static void main(String[] args) {
8. // TODO 自动生成方法存根
9. ApplicationContext ctx = new ClassPathXmlApplicationContext(
10. "applicationContext.xml");
11. PurviewImpl purviewImpl = (PurviewImpl) ctx.getBean("purviewImpl");
12. purviewImpl.checkLogin();
13.
14. }
15.
16. }
17.
applicationContext.xml配置文件.
1. <bean id="purviewImpl" class="aop.PurviewImpl"></bean>
2. <bean id="purviewAdvice" class="aop.PurviewAdvice"></bean>
3. <bean id="purviewAdvisor"
4. class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
5. <property name="advice">
6. <ref local="purviewAdvice" />
7. </property>
8. <property name="patterns">
9. <list>
10. <value>.*checkLogin.*</value>
11. </list>
12. </property>
13. </bean>
14.
15. <bean id="autoproxyaop"
16. class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
17. <property name="beanNames">
18. <value>purviewImpl</value>
19. </property>
20. <property name="interceptorNames">
21. <list>
22. <value>purviewAdvisor</value>
23. </list>
24. </property>
25. </bean>
运行结果报错,错误信息为:
Exception in thread "main" java.lang.ClassCastException: $Proxy1
at aop.Test.main(Test.java:34)
将Test类中
PurviewImpl purviewImpl = (PurviewImpl) ctx.getBean("purviewImpl");
修改为
Purview purviewImpl = (Purview) ctx.getBean("purviewImpl");
程序运行结果为:
This is before method!
This is checkLogin method!
至此拦截器使用成功!
总结:用spring得到bean的时候,若该类实现了接口,则返回其接口类型的实例,
若直接返回该实现类类型的实例则会报错,错误信息如上所述.
分享到:
相关推荐
在这个简单的例子中,我们将探讨如何在 Spring 中配置和使用拦截器。 首先,我们需要创建一个自定义的拦截器类,该类需要实现 `HandlerInterceptor` 接口。这个接口提供了三个方法:`preHandle()`、`postHandle()` ...
本文将深入探讨Spring拦截器的一个简单实例,通过源码分析和实际操作,帮助你理解其工作原理。 首先,我们需要了解Spring MVC的处理流程。当一个HTTP请求到达服务器时,Spring MVC会按照配置的DispatcherServlet...
每个拦截器都可以决定是否允许请求继续传递到下一个拦截器或控制器。 2. **创建自定义拦截器**:首先,我们需要创建一个实现了`HandlerInterceptor`接口的类。这个接口中有三个方法: - `preHandle...
在Spring Boot应用中,登录拦截器是一个至关重要的组件,它用于保护特定的Web资源,确保只有经过身份验证的用户才能访问。Spring Boot结合了Spring MVC框架,提供了方便的方式来实现这样的拦截器。本篇文章将深入...
在这个简单的例子中,我们将深入理解如何配置和使用 Spring 的拦截器来实现特定的功能。 首先,我们有一个接口 `Purview`,其中包含一个方法 `logincheck()`。这个接口定义了需要被拦截的方法。接口的作用是提供一...
在Spring Boot中注册拦截器,我们需要在配置类中使用`@EnableAspectJAutoProxy`开启AOP代理,并通过`@Bean`注解声明拦截器实例。然后,使用`@Around`注解定义切点,即拦截所有的JPA操作。 在实际开发中,为了使分库...
在`DemoSpringMVCInterceptor`这个示例中,你可能会看到如何定义和注册一个简单的拦截器。这个示例可能包括了上述的三个方法的实现,以及一些基本的逻辑,比如打印请求信息或者进行权限验证。 通过理解并实践Spring...
虽然在这个特定的例子中,`application.properties`可能没有直接与拦截器相关,但我们可以在这里配置一些全局属性,比如日志级别,这对于调试和监控拦截器的行为非常有用。例如: ```properties logging.level.org....
通过以上步骤,我们就完成了Struts2和Spring的整合,Action实例由Spring管理,并且能够使用自定义的拦截器。这种整合方式让开发者能够充分利用两者的优点,提高代码的可维护性和可扩展性。 值得注意的是,Struts2_...
为了实现登录拦截,我们需要创建一个拦截器类,例如`LoginInterceptor`,并实现`HandlerInterceptor`接口: ```java import org.springframework.stereotype.Component; import javax.servlet....
在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前或之后执行特定的逻辑。它们可以用来实现通用的功能,如权限验证、日志记录、性能统计等,避免在每个控制器方法中重复代码...
在本项目中,"spring集成cxf客户端和服务器端demo(含自定义拦截器)"是一个实战案例,展示了如何在Spring框架下与Apache CXF服务进行整合,实现客户端和服务端的交互,并利用拦截器来增强功能。以下是这个项目涉及的...
登录拦截器是 Spring MVC 中的一个关键特性,用于在请求到达实际处理方法之前进行预处理,例如检查用户是否已经登录,确保只有经过授权的用户才能访问某些资源。 **Hibernate** Hibernate 是一个强大的对象关系映射...
拦截器是Spring MVC中的一个重要概念,它允许开发者在请求被控制器处理之前、之后以及处理完成之后进行额外的操作,例如权限验证、日志记录、性能监控等。 Spring MVC的拦截器与Servlet的Filter有所不同,Filter是...
在这个简单的例子中,我们将聚焦于Spring AOP中的织入(Weaving)和织出(Ejbouting)拦截器的概念,这些在Spring MVC和SSM(Spring、SpringMVC、MyBatis)框架中非常常见,尤其是对于处理数据库操作的Mapper层。...
本项目是一个基于Spring 4的Spring MVC实现,内含登录功能和拦截器,可以直接运行,为开发者提供了一个快速开发的基础模板。 首先,让我们详细了解一下Spring MVC的核心概念: 1. **DispatcherServlet**:它是...
现在我们来详细探讨一下这个"rcp与spring集成的一个简单例子"。 首先,集成的初衷是为了将Spring的灵活性和模块化引入到RCP应用中。通过Spring,我们可以轻松地管理对象的生命周期、实现松耦合,并利用其强大的AOP...
例如,可能会有一个自定义的MyBatis拦截器用于分页查询,一个Spring AOP切面用于记录操作日志,Spring事务管理确保数据的一致性,而反射工具类可能用于动态加载配置或处理某些通用的反射任务。通过这些组件的组合,...
具体实现时,开发者可以创建一个名为`LoginInterceptor`的拦截器,该拦截器包含以下几个关键方法: - `void destroy()`:在拦截器不再使用时释放资源。 - `String intercept(ActionInvocation invocation)`:这是...
在 Spring 框架中,拦截器(Interceptor)是一个非常重要的概念。拦截器是Spring框架中的一个核心组件,负责拦截和处理HTTP请求。拦截器可以在请求处理之前、之后、或者抛出异常时执行某些操作,例如身份验证、日志...