`

Spring Aop 拦截 Struts2 Action 问题

阅读更多
<aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy> 

<bean id="profiler" class="cn.com.xyz.action.SimpleProfiler" /> 

<aop:config> 
<aop:aspect ref="profiler"> 
<aop:pointcut id="test" expression="(execution(* cn.com.xyz.action.*Action.*()))" /> 
<aop:around pointcut-ref="test" method="profile" /> 
</aop:aspect> 
</aop:config>
  

通过一下这篇文章:http://xuxingyin.iteye.com/blog/600091

 

struts.xml文件:

   <action name="login" class="memberAction" method="login">
    <result name="loginSuc">${nextPage}</result>
    <result name="loginFail">login.jsp</result>
   </action>

spring的applicationcontext.xml配置文件:

//action

<bean id="memberAction"
   class="com.edgar.s2shlogin.web.action.MemberAction" scope="prototype">
   <property name="memberService">
    <ref bean="memberService" />
   </property>
</bean>

<!-- 自动代理对象 -->
<bean id="autoProxy"
   class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
   <property name="proxyTargetClass" value="true"/> //注意这里!
   <property name="beanNames">
    <list>
     <value>*Action</value>
    </list>
   </property>
   <property name="interceptorNames">
    <list>
     <value>checkArgumentsAdvice</value>
     <value>exceptionLogger</value>
    </list>
   </property>
</bean>

当struts2的action没有配置动态方法调用的时候,运行正常。当使用动态方法调用的时候,运行时报

类似: NoSuchMethodException:$Proxy6.login() 的错误,解决办法是使用CGLib实现aop,加上

<property name="proxyTargetClass" value="true"/>

如果使用 aop:方式的话,加上<aop:aspectj-autoproxy proxy-target-class="true"/>

 

 

 

       应该注意的是expression="(execution(* cn.com.xyz.action.*Action.*()))" 路径一定要配置正确要不出莫名其妙的问题,这里总结下留下作为以后参考!

分享到:
评论

相关推荐

    struts2+spring aop demo

    4. **连接Struts2和Spring**:在Struts2的配置文件(如`struts.xml`)中,我们需要配置Action类以使用Spring的依赖注入,这样Spring才能识别并应用AOP代理。 在实际的项目中,我们还需要考虑如何处理自定义参数。...

    struts2整合spring实现拦截器

    通过以上步骤,我们就完成了Struts2和Spring的整合,Action实例由Spring管理,并且能够使用自定义的拦截器。这种整合方式让开发者能够充分利用两者的优点,提高代码的可维护性和可扩展性。 值得注意的是,Struts2_...

    struts2+spring4+mybatis3,登录jquery ajax,struts拦截器,springAOP的例子

    本项目示例涵盖了这些框架的整合使用,以及jQuery AJAX登录、Struts拦截器和Spring AOP(面向切面编程)的应用。 1. **Struts2**:Struts2是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,它简化了...

    spring3+struts2+ibatis

    同时,Struts2可以与Spring无缝集成,实现Action类的依赖注入,便于管理和测试。 三、Ibatis:持久层的优雅解决方案 Ibatis与传统的ORM框架不同,它并不完全取代SQL,而是将SQL语句与Java代码解耦,提供动态SQL...

    struts2+spring集成bug——使用AOP时可能遇到的问题分析

    同时,Struts2的拦截器链可以通过Spring的AOP机制进行扩展,以实现更灵活的功能。 然而,当在AOP中遇到问题时,可能的原因有以下几点: 1. **配置错误**:确保`struts.xml`和`applicationContext.xml`中的配置正确...

    struts2+hirbenate+SpringAOP

    Struts2、Hibernate和Spring AOP是Java Web开发中三个重要的框架,它们分别负责不同的职责。Struts2作为MVC(Model-View-Controller)框架,主要处理HTTP请求,实现业务逻辑与视图的解耦;Hibernate是一个持久化框架...

    spring+struts2整合源码

    在`struts-default.xml`中配置拦截器栈,并在`struts-plugin.xml`中关联Spring的AOP拦截器。 7. **测试与部署**: 测试时,可以使用Spring Test框架对Service层进行单元测试,而Struts2 Action可以通过MockMVC模拟...

    spring与struts2整合

    4. **Action 类**:Action 类通常作为 Struts2 处理请求的入口,它可以从 Spring 容器中注入所需的依赖。通过在 Action 类上使用 `@Component` 注解并配置在 Spring 配置文件中,可以确保 Spring 能够创建和管理这些...

    hibernate4.3.5+spring4.0.6+struts2的全部jar包

    3. **AOP整合**:Spring的AOP可与Struts2的拦截器协同工作,如添加统一的异常处理。 4. **数据源配置**:Spring管理数据源,Hibernate通过Spring获取DataSource,实现数据访问。 5. **ModelDriven或FormDriven模式**...

    Spring与Struts 2整合.zip

    5. **拦截器集成**:可以使用Spring的AOP拦截器与Struts 2的拦截器相结合,增强应用的功能。 6. **测试与调试**:整合完成后,进行单元测试和集成测试,确保所有组件协同工作。 整合Spring和Struts 2可以使开发...

    CXF2.1.3+spring3.0+struts2.3.4

    通过CXF创建服务,利用Spring进行组件管理和依赖注入,再借助Struts2处理用户交互,可以构建出高效且稳定的业务系统。压缩包中的"CXFWebService"可能包含了项目配置、源代码、依赖库等资源,帮助开发者理解和学习...

    Spring+struts2

    Spring 提供了全面的依赖注入(DI)和面向切面编程(AOP)功能,而 Struts2 则是用于构建 MVC(Model-View-Controller)架构的优秀框架。将两者结合使用,可以构建出高效、可维护性高的 web 应用程序。 首先,让...

    Mybatis3+Spring4 +Struts2整合源码

    2. **Struts2的Action配置**:在Struts2的配置文件中定义Action,这些Action会调用Spring管理的Service层方法,从而实现业务逻辑。 3. **Mybatis的动态SQL**:Mybatis允许在映射文件中编写动态SQL,使得SQL查询更加...

    struts2 spring hibernate integration

    在实际项目中,通常使用Spring来管理Struts2的Action实例,通过Spring的DI实现Action类的依赖注入。同时,Spring负责管理Hibernate SessionFactory,提供透明的事务管理。在Struts2的Action执行完毕后,可以通过...

    ssh的包spring4+struts2+hibernate5

    Struts2提供了更强大的动作拦截器(Action Interceptors),支持多种结果类型,以及更灵活的配置方式。此外,Struts2与Spring有很好的集成,可以方便地利用Spring的DI和AOP功能。 Hibernate5则是Java领域的一款持久...

    spring-mybatis-struts2-master ——demo

    3. 配置Struts2:配置struts.xml,定义Action及其结果,设置拦截器栈。 4. 配置MyBatis:创建mybatis-config.xml,定义数据源、事务工厂,以及Mapper接口和XML映射文件的路径。 5. 创建实体类、Mapper接口和XML映射...

    Spring之Spring2.5集成Struts2.2

    10. **优化与性能**:集成后,可以进一步优化配置,例如使用Spring的缓存支持,或者Struts2的拦截器来提高性能。 以上是Spring 2.5集成Struts2.2的主要步骤和知识点。通过这样的集成,开发者可以充分利用两个框架的...

    Spring+Struts2+hibernate+Redis整合

    在IT行业中,SSH(Spring、Struts2、Hibernate)是一个经典的Java Web开发框架组合,而Redis则是一个高性能的键值存储系统,常用于缓存和数据持久化。将SSH与Redis整合,可以提升应用程序的性能和响应速度。下面将...

    整合struts2和spring

    在Struts2和Spring整合中,可以使用Spring提供的拦截器,例如`org.springframework.web.struts.DelegatingInterceptor`,它能让Spring容器处理Action的实例化。 7. **事务管理**:Spring提供了强大的事务管理功能。...

    struts2+spring+mybatis框架

    4. **整合Spring和Struts2**:使用Spring的Struts2插件,使Spring管理的Bean可以直接在Struts2 Action中注入使用。 5. **整合Spring和MyBatis**:通过Spring的SqlSessionFactoryBean,将MyBatis的SqlSessionTemplate...

Global site tag (gtag.js) - Google Analytics