当同时多个访问Spring单例实例时
如果您在spring配置的singleton作用域中定义服务,那么如果多个用户同时尝试访问它(即作为注入控制器的依赖项),会发生什么情况?是否会引起冲突?或者IoC容器将保留后面的调用直到第一个调用完成?如果是这样的话,它会降低大型应用程序的性能,这对我来说是不对的。有人能给我一个正确的答案吗当同时多个访问Spring单例实例时,spring,ioc-container,Spring,Ioc Container,如果您在spring配置的singleton作用域中定义服务,那么如果多个用户同时尝试访问它(即作为注入控制器的依赖项),会发生什么情况?是否会引起冲突?或者IoC容器将保留后面的调用直到第一个调用完成?如果是这样的话,它会降低大型应用程序的性能,这对我来说是不对的。有人能给我一个正确的答案吗 顺便说一句,正如我所记得的,如果不是单例的,IoC容器将根据请求的数量汇集几个实例。有人能证实这一点吗?单身就是单身。一个实例由Spring上下文管理,所有请求都并发地通过该实例。这取决于你,使线程安全
顺便说一句,正如我所记得的,如果不是单例的,IoC容器将根据请求的数量汇集几个实例。有人能证实这一点吗?单身就是单身。一个实例由Spring上下文管理,所有请求都并发地通过该实例。这取决于你,使线程安全
如果您的bean不是线程安全的,那么考虑使用非独占范围的bean。Spring允许您使用请求、会话和原型作用域
如果多个用户同时尝试访问它(即作为依赖项注入控制器),会发生什么情况 一个单例bean可以被并发访问多次。这就是为什么它总是必须是线程安全的 是否会引起冲突 只有当你不能使它线程安全 或者IoC容器将保留后面的调用直到第一个调用完成 不,那太糟糕了顺便说一句,正如我所记得的,如果不是单例的,IoC容器将根据请求的数量汇集几个实例。有人能证实吗 Spring具有以下作用域():
- (每个应用程序只管理一个实例)
- (每次注射一个新实例)
- (每个HTTP会话一个实例,仅在Spring MVC中)
- (每个HTTP请求一个实例,仅在Spring MVC中)
- (每个全局HTTP会话一个实例,仅在基于portlet的Spring MVC中)
您描述的是一个对象池。在春季,这将作为一个原型范围实现。在内部,它将使用类似的库。感谢您的回复。使单例类线程安全的最佳实践是什么?我认为使用同步块不是一个好主意,因为它对性能来说太昂贵了。@Brolinuk有时需要同步块,有时不需要。请阅读以供进一步参考。基本上:如果没有可变状态,则通常是线程安全的。如果这样做,您将需要某种方法来同步对可变状态的访问。还有一个