javassh开发时为什么action里的属性的bean作用域是prototype而dao层的bean作用域是singleton?

2022-04-15 科技 67阅读
因为你每次请求的Action返回的状态未必相同,应该用prototype。但是像basedao这样在一个只会存在一个共享的bean时,就用singleton。(singleton意味对数据库的访问只能单线程,才能保证数据库数据的一致性,而网络访问由于每一个时间都不一样,所以struts的action应该用prototype保证你的访问返回的是你的当前访问状态,而且当某一线程出现问题时不影响其它线程或设置singleton="false")
其次,dao,service,使用单例。struts的action不使用单例。

dao层用hibernate,用来与数据库交互service用spring,用来注入,控制器用struts,spring默认设置为singleton。
当然,也可以设置scope="session",也能避免web中action的并发问题,只为当前用户创建一次bean,直至session消失。在这种情况下,对当前用户而言,bean是有状态的。好处就是少创建bean的实例,有那么一点点性能的提升
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com