Struts2和Spring整合中的Action是由谁创建的,有什么区别

发布于 2021-11-15 11:24:44 字数 830 浏览 840 评论 2

以下配置均未在Struts配置文件中加入<constant name="struts.objectFactory" value="spring" />

情况说明如下:登录页面提交到Action中,Action在execute方法中调用ms对象中的valid方法进行验证,返回SUCCESS.

在Action的构造方法中输出一行文字


第一种情况:在Struts中配置Action,配置name,class配置成Spring中Action类的Bean ID,不指定调用方法。spring中配置Action Bean,class配置实际类名,并显示指定ms Bean的引用。这时Action由Sping来创建。构造方法输出两行

第二种情况:在Struts中配置Action,配置name,class配置成实际类名。spring中只配置ms Bean的引用,进行自动装配。这时Action由Spring进行创建。构造方法输出一行

第三种情况,在Struts中配置Action,配置name,class配置成实际类名,指定方法名不为默认的execute,为任意其他,例如test,这个方法调用ms对象中的valid方法进行验证。spring中配置Action Bean,class配置实际类名,并显示指定ms Bean的引用。这时也是可以成功的。构造方法输出一行

第三种情况中,如果Struts中不指定方法,或者指定execute方法,均报错。虽然报错,但是控制台输出一行Action构造方法中的文字。

想问一下第三种情况的Action由谁来创建,Struts创建和Spring来创建有什么区别



如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

秉烛思 2021-11-17 23:49:36

第三种时,你试着,在action 获得service层的引用,就知道了,你这个调用到的action是struts 创建的(同时spring也用创建一个,但没有被用到),并没有被spring管理,没法和spring ioc管理的bean很流畅的操作的,你想调用service时,需用getBean的方法从容器中取到sercie,

夜无邪 2021-11-16 00:21:39

有时候人会迷失,错误的去追逐和我们一开始偏离很远的目标~

好吧,回正题,只要是struts2的action,肯定是由struts2创建的,当你写了@Controller之后,对象就会交由spring 来管理。其他的我想我没有必要去深究,实践回答了你的问题。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文