我在很多地方都看到过,Spring 应用程序的 DAO 和服务类应该是单例范围的。
在我的应用程序中,我有以下服务类
@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 类将在开始时仅自动连接到服务类一次。因为它是这将是一个请求繁重的Web 应用程序,这意味着(或者这是否意味着?)数百个线程将使用这两个类的相同实例。
那么在这种情况下如何保证线程安全呢?
那么xml中定义的hibernate sessionfactory bean的范围呢?
我对 spring mvc 应用程序中的 bean 范围和线程安全感到非常困惑。Springsource 文档没有为 Web 应用程序清楚地解释这些。
任何人都可以向我解释使用 bean 范围(用于 DAO、Service、Controller 和其他 bean)来处理重请求 Web 应用程序的最佳实践吗?
任何解释这些的链接都会感谢我。
提前感谢您的建议。