muk*_*und 6 java model-view-controller spring scope javabeans
我已经看到它在很多地方都写过,应将Spring应用程序的DAO和Service类限制为单例范围。
在我的应用程序中,我具有以下服务类别
@Service
public class CustomerServiceImpl implements CustomerService {
@Autowired
private CustomerDAO customerDAO;
.......
parameterised methods only....
}
Run Code Online (Sandbox Code Playgroud)
和DAO班
@Repository
public class CustomerDAOImpl implements CustomerDAO {
@Autowired
private SessionFactory sessionFactory;
...............
parameterised methods only....
}
Run Code Online (Sandbox Code Playgroud)
由于我没有定义任何作用域,因此默认作用域是单例。因此,每个容器只将CustomerService和CustomerDAO实例化一次,而且DAO类在开始时仅自动连接到Service类一次。将成为一个繁重的请求 Web应用程序,这意味着(或这意味着?),数百个线程将使用两个类的相同实例。
那么在这种情况下如何保证线程安全?
以及在xml中定义的hibernate sessionfactory bean的范围呢?
我对spring mvc应用程序中的bean作用域和线程安全性非常困惑。Springsource文档没有清楚地为Web应用程序解释这些内容。
谁能为我解释在请求繁重的Web应用程序中使用bean作用域(用于DAO,Service,Controller和其他bean)的最佳实践吗?
任何解释这些的链接都会令我感激。
感谢您的建议。
只要您的服务和DAO单例不保存状态(不保存实例变量-除了其他bean-在方法内部操作),线程安全就没有问题。
关于会话工厂,spring web-app中的默认休眠会话范围基于“每个请求一个休眠会话”模式,这意味着每个http请求(线程)将拥有一个会话,因此无需担心并发性都不是。
| 归档时间: |
|
| 查看次数: |
2063 次 |
| 最近记录: |