当前位置: 首页 > 知识库问答 >
问题:

使用Spring AOP截取Struts 2动作方法

古起运
2023-03-14

我试图截取Struts2 Action类的方法,以便使用Spring AOP打印方法开始和方法结束指示语句。

<bean id="testAdviceBean" class="com.tcs.oss.plugins.SimpleAdvice"> 
</bean>

<aop:config>
  <aop:aspect ref="testAdviceBean" order="200">

     <aop:pointcut id="testPoint2"
           expression="execution(java.lang.String com.test..DeviceAction.*(..))"
     /> 

     <aop:around pointcut-ref="testPoint2" method="loggingAdvice" />  

  </aop:aspect>
</aop:config>

09:26:49,093跟踪[org.springframework.beans.factory.support.DefaultListableBeanFactory](HTTP-01H3463916-172.20.211.235-8543-5)忽略bean.string]::没有找到与依赖项匹配的[java.lang.string]类型的bean:预期至少有1个bean符合此依赖项的autowire候选项。依赖注释:{};嵌套异常是org.springframework.beans.factory.nosuchBeanDefinitionException:没有找到匹配类型[java.lang.string]的bean用于依赖项:需要至少有1个bean可以作为此依赖项的autowire候选项。依赖项批注:{}

09:26:49,095跟踪[org.springframework.beans.factory.support.DefaultListableBeanFactory](HTTP-01H3463916-172.20.211.235-8543-5)未按名称自动读取bean'org.apache.struts2.dispatcher.ServletDispatcherResult'的属性“URL helper”:未找到匹配的bean

09:26:49,100 DEBUG[org.apache.struts2.dispatcher.servletdispatcherresult](HTTP-01h3463916-172.20.211.235-8543-5)转发到位置/general/error.jsp

如果我只删除上面的AOP配置,它就可以正常工作了。我做错了什么?

共有1个答案

祝昊东
2023-03-14

建议方法没有被调用,因为Action类是从ActionSupport类扩展而来的,而ActionSupport类又有一个接口实现...因此,在本例中,为Action类创建了一个JDK代理--这种类型的代理没有任何特定于Action类的方法(非继承)。

AOP配置中添加proxy-target-class=“true”属性,使得Spring生成基于CGLib(需要在类路径中添加CGLib)的代理。它现在也有Action类的非继承方法。

 类似资料:
  • 主要内容:映射拦截动作,参考Struts 2的开发者用来声明行为属于一个包,扩展 “struts-default“, 其中包含默认设置的拦截。 拦截器的默认设置进行分组为“defaultStack”在struts-default.xml文件中,它位于 struts2-core.jar 文件,“defaultStack”提供所有的核心Struts2功能,这是最适合应用的需要。 试着学习struts-default.xml文件,

  • 主要内容:1. 动作 - Action,2. 可选动作接口,3. ActionSupport,4. 动作注释,总结在Struts2中,会花大部分的时间用在用动作来处理工作。动作类包含业务逻辑,获取资源包,保存数据,验证,并选择应发回给用户的视图的结果页面。这是Struts2的核心,所以必须要了解动作的基本概念。 1. 动作 - Action Struts 2动作不强迫你实现任何接口或扩展类,它只是需要你实现一个 execute()方法返回一个字符串来表示其应该返回的结果页面。 在struts.x

  • 主要内容:创建动作:,创建视图,执行应用程序,建立多个动作:动作是Struts2框架的核心,因为他们的任何MVC(模型 - 视图 - 控制器)框架。每个URL将被映射到一个特定的动作,它提供了来自用户的请求提供服务所需的处理逻辑。 但动作也提供其他两个重要的能力。首先,操作从请求数据的传输中起着重要的作用,通过向视图,无论是一个JSP或其它类型的结果。二,动作必须协助的框架,在确定结果应该渲染视图,在响应该请求将被退回。 创建动作: 在Struts2的动作

  • 主要内容:Struts2框架的拦截器:,如何使用拦截器?,创建自定义的拦截器,创建拦截器类:,创建动作类:,创建视图,创建页面:,配置文件,堆叠多个拦截器:拦截器的概念是Servlet过滤器或JDK代理类一样的。拦截器允许横切功能分开实现的动作,以及框架。使用拦截器,可以实现如下: 提供预处理行动之前被称为逻辑。 提供后处理逻辑动作后被调用 捕获异常,这样可以进行替代处理。 Struts2框架提供的许多功能都使用拦截实现的例子包括异常处理,文件上传,生命周期回调和验证等事实上作为Struts2的

  • 一些日志记录需要在类的静态方法执行前后完成。我试图使用Spring AOP实现这一点,但它不起作用,对于普通方法来说,它是起作用的。请帮助我理解如何实现这一点,如果可以使用注释来完成,那就太好了。

  • 问题内容: 我想将我的JSON对象从Javscript发送到Struts2 Action。 样本JSON对象 我的Jquery Ajax Struts.xml配置 我的动作课 我的问题是如何在Action类中接收JSON对象。 注意:POST OF JSON对象成功。.我只是不知道如何通过Action Class接收它。.请帮助谢谢 问题答案: 您输入的内容有错别字 您是否已在中定义图块结果和拦截