spring整合struts2的问题

发布于 2021-11-27 14:04:15 字数 225 浏览 980 评论 8

软件结构是顶层是struts的Action,接下来是业务处理层service和数据库交互层dao,service和dao的实现类都是单例模式,用了@service和@repository修饰。想不明白的是网上说的Action除了要用@Controller修饰,还需要用
@Scope("prototype")修饰符指定为多例模式,但是Action本身不就是多例模式吗?而且它也是软件中的控制器,是否可以不写Action的这2个注解,不写会有什么影响?

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

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

发布评论

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

评论(8

甜扑 2021-11-30 15:12:09

要写的,因为Struts与spring整合,是将创建Action的权利交给spring,而spring创建action默认是单例的,struts默认是多例的,所以要写@scrope(type=prototype),@Controller是spring的注解,意思是反转控制,将创建action的权利交给spring,如果你没有在applicationContext.xml中配置action的<bean>,那么就要再action类上加上该注解

青萝楚歌 2021-11-30 15:07:12

哪又怎么样,你很高端?呵呵

情痴 2021-11-30 14:16:30

问这种问题就表示你是一个JAVA小白  呵呵

猫九 2021-11-30 12:43:23

Struts2的Controller要原型,是因为会有成员属性,每次请求,成员属性需要单独初始化,否则会乱。

SpringMVC的Controller单例,是因为它不需要成员属性,针对某个方法的Controller,就算在Struts2中的成员属性需要迁移到SpringMVC,也是作为方法的入参处理的。

醉酒的小男人 2021-11-30 12:14:18

对象都由spring来管理,就按照spring的规则来吧

温柔少女心 2021-11-30 09:46:38

亲,Spring 推荐的是单例并不是多例哦。Spring为什么默认的都是单例?为什么Spring mvc的Controller也是单例?

明媚如初 2021-11-29 10:07:20

谢谢

妖妓 2021-11-29 05:38:23

还是写上吧,因为你把struts2的核心控制器也就是action类交给spring去管理,在spring中以bean的形式去管理,我们都知道bean是默认单例的。
但是action有存储数据的作用域,为了保证每个用户访问action的时候操作自己的数据,所以action类必须设置成多例的,@Scope("prototype")这个注解让action变成多例的

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