Spring如何在Struts操作中注入未在applicationContext.xml中定义的属性

46scxncf  于 2022-11-21  发布在  Spring
关注(0)|答案(1)|浏览(101)

我在一个项目中有像Spring 3 + Struts 2 + Hibernate 3这样的框架。而且它使用Spring安全性。
使用web.xml中定义的spring ContextLoaderListener集成Spring和Struts

<listener>
    <display-name>Spring Initialization</display-name>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

有几个服务类通常进行数据库调用。比如agentserviceprocess就是一个这样的类,它有getAgents()这样的方法。
Struts操作对于每个进程都有一个属性和setter getter,这些进程类在application-context.xml中被定义为bean。
令人惊讶的是,我找不到任何一个以action类作为类参数的bean。我的意思是spring并没有控制action对象的示例化。那么spring是如何在这些action中注入服务属性对象的呢?
同时,我发现了以下条目

<filter>
    <filter-name>struts</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>struts</filter-name>
    <url-pattern>*.action</url-pattern>
    <url-pattern>*.htm</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>
i2loujxw

i2loujxw1#

要与Spring集成,应使用struts2-spring plugin
加载此插件时,将应用插件的配置以使用其自己的对象工厂来示例化操作类。
构建动作示例时,它会将它们传递给Spring进行自动装配。
您应该提供属性的getter和setter以进行自动连接。您还提供了依赖项的spring配置。

相关问题