java ssh开发时为什么action里的属性的bean作用域是prototype而dao层的bean作用域是singleton?
展开全部
因为你每次请求的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的实例,有那么一点点性能的提升
其次,dao,service,使用单例。struts的action不使用单例。
dao层用hibernate,用来与数据库交互 service 用spring,用来注入,控制器 用struts,spring默认设置为singleton。
当然,也可以设置scope="session",也能避免web中action的并发问题,只为当前用户创建一次bean,直至session消失。在这种情况下,对当前用户而言,bean是有状态的。好处就是少创建bean的实例,有那么一点点性能的提升
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询