spring注入dao单例问题
我们一般都是把service,dao,session设置成单例,有几个问题不明白
1、现在有两个访问请求。因为是单例,所以线程1的service等于线程2的service,dao,session也是同样的,这样的话,这些成员变量就不是线程安全的了,怎么解释
2、现在我把session设置成原型,service有一个业务方法,并且这个业务方法是受事务控制的
@Transactional
public void aa(){
dao1.insert(xx1);
dao2.insert(xx2);
}
根据我的测试dao1得到的session与dao2的到的session不相等,既然session不相等,那就不是同一个会话,也就是说如果dao2.insert(xx2)出错,dao1.insert(xx1);也不会回滚,因为事务控制的是同一个会话,而根据我的测试,结果是会回滚的,怎么解释
1、现在有两个访问请求。因为是单例,所以线程1的service等于线程2的service,dao,session也是同样的,这样的话,这些成员变量就不是线程安全的了,怎么解释
2、现在我把session设置成原型,service有一个业务方法,并且这个业务方法是受事务控制的
@Transactional
public void aa(){
dao1.insert(xx1);
dao2.insert(xx2);
}
根据我的测试dao1得到的session与dao2的到的session不相等,既然session不相等,那就不是同一个会话,也就是说如果dao2.insert(xx2)出错,dao1.insert(xx1);也不会回滚,因为事务控制的是同一个会话,而根据我的测试,结果是会回滚的,怎么解释
...全文
相关推荐
J2EE企业级项目开发-1期 09 Spring使用经验.doc
**资源对象管理**:开始尝试使用单例(Singleton)模式来管理需要共享的对象,如使用 Hashtable 存储 DAO 对象,以解决 session 中存储大量数据导致的内存问题。
Spring_01_入门篇_依赖注入(控制反转)_ANN
`@Bean`:用于方法上,表示该方法返回的对象将被注册为一个Spring bean。8. `@Scope`:定义bean的作用范围,如单例(singleton)、原型(prototype)等。
【Spring】总结Spring整合Mybatis的底层原理实现步骤
使用`beanFactory.registerSingleton()` 直接注册单例Bean。2. 在配置类上使用`@Bean` 注解,声明一个产生Bean的方法。3.
Spring-IndicThreads-PeterThomas[
**避免单例模式**:虽然Spring支持单例Bean,但在某些情况下过度使用单例可能导致难以调试的问题,建议尽量使用原型(Prototype)作用域。6.
50 道 经典 Spring 面试题.docx
- **Bean Scope**:Singleton(单例)、Prototype(原型)、Request、Session、Global Session等。


Java SE
