missfmaster 2015-01-30 07:58 采纳率: 100%
浏览 1776
已采纳

Spring如何给Struts生成新action对象?

Spring3.2.12
Struts2.3.20

看struts代码:

@Component
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
@ParentPackage("struts-default")
@Namespace("/test")
public class TestAction {

    private String flag;

    @Action(value = "testAction", results = { @Result(name = "success", location = "/index.jsp") })
    public String test() {
        System.out.println("request struts.");
        try {
            WebApplicationContext context = WebApplicationContextUtils
                    .getWebApplicationContext(ServletActionContext.getServletContext());
            TestAction test = context.getBean("testAction", TestAction.class);
            System.out.println("this:" + this.flag+"\t" + this);
            System.out.println("spring:" + test.flag+"\t" + test);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "success";
    }

    @PostConstruct
    public void setFlag() {
        this.flag = "From Spring";
    }

运行结果:

 request struts.
this:From Spring    toString:com.me.permission.action.TestAction@732efcfe
spring:From Spring  toString:com.me.permission.action.TestAction@2140243b
request struts.
this:From Spring    toString:com.me.permission.action.TestAction@11e3c2c6
spring:From Spring  toString:com.me.permission.action.TestAction@2140243b
request struts.
this:From Spring    toString:com.me.permission.action.TestAction@521d590d
spring:From Spring  toString:com.me.permission.action.TestAction@2140243b

运行结果 说明,spring中持有一个TestAction的对象,而且是单例;
请求action的时候,是spring给struts生成的action,但是每一次都是新的,并不是spring所持有的那个单例,这是为什么哪?
怎么才能让spring所持有的那个单例,给struts哪?让struts每次请求都使用spring中所持有的那个单例。

  • 写回答

3条回答 默认 最新

  • missfmaster 2015-02-26 07:11
    关注

    谢谢各位了,查看了下源码,发现此处配置有错误。
    action不需要配置
    @Component
    @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON),
    _而struts在通过插件向spring索要action对象的时候,给spring传递的是此action的全类名,所以不需要再spring中配置action的bean,spring也可以根据struts提供的全类型找到该bean,并将其实例化,交给struts。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)