我试图让自己的行动课成为单身人士。重点是在MVC模式中创建动作类真正的控制器。特别是在实现REST控制器时,控制器的范围可以扩展到应用程序的生命周期。与Spring框架一样,默认情况下控制器被置于默认范围内,Spring中的默认范围是单例。
Struts2也有默认范围,它也是单例。我想将我的动作类放到这个范围,并从值栈中删除它们。
我如何修改Struts2框架以使我的操作像Spring中的控制器一样?我知道我可以将操作类的管理委托给Spring,但是我不能使用默认范围,并且Struts2容器仍在继续运行。我无法将其从框架中删除,因为它不可插拔。
因此,在Spring和Struts2容器中捎带我不能使我的动作类单例,因为Struts2将它们实例化并放入值栈。这是我的问题:如果我选择Struts和Spring之间的容器将我的动作类放到默认范围,我怎么能告诉Struts2框架不要把它们放到值栈?
答案 0 :(得分:3)
假设您正在使用XWork的DefaultActionInvocation
实现,那么就是通过init
方法完成的。拉出来有点痛苦,因为它在XWork和S2中的动作代理和动作代理工厂下面分层。
那就是说,我对非常犹豫不决,做出这样的改变;它具有系统范围的影响,并且基本上与关于XW / WW / S2的所有相反。
(不相关,但单身性质不是定义控制器的内容,而是定义组件内容的职责。)