【发布时间】:2013-03-23 16:36:30
【问题描述】:
我在很多地方都看到过,Spring 应用程序的 DAO 和 Service 类应该是singleton范围的。
在我的应用程序中,我有以下服务类
@Service
public class CustomerServiceImpl implements CustomerService {
@Autowired
private CustomerDAO customerDAO;
.......
parameterised methods only....
}
还有一个 DAO 类
@Repository
public class CustomerDAOImpl implements CustomerDAO {
@Autowired
private SessionFactory sessionFactory;
...............
parameterised methods only....
}
由于我没有定义任何范围,所以默认范围是单例。因此 CustomerService 和 CustomerDAO 都只会在每个容器中实例化一次。此外,DAO 类将在开始时仅自动连接到 Service 类一次。由于它将是一个繁重的请求网络应用程序,这意味着(OR是否意味着?)数百个线程将使用这两个类的相同实例。
那么在这种情况下如何保证线程安全?
那么xml中定义的hibernate sessionfactory bean的范围呢?
我对 spring mvc 应用程序中的 bean 范围和线程安全感到非常困惑。 Springsource 文档没有为 Web 应用程序清楚地解释这些。
谁能解释一下使用 bean 范围(用于 DAO、Service、Controller 和其他 bean)来处理重请求 Web 应用程序的最佳实践吗?
任何解释这些的链接都会感谢我。
提前感谢您的建议。
【问题讨论】:
标签: java spring model-view-controller scope javabeans