Spring Boot 中的单例范围



所以我的问题是关于春季启动中的单例范围。我做过几个 Spring 引导项目,但我从未见过用 Prototype 范围注释的类,所以我假设所有定义的 bean 在 spring boot 中默认都是单例的。现在假设 2 个线程正在访问单例的 bean,那么在这种情况下,我们如何确保一个线程所做的更改不会影响在同一 bean 上工作的另一个线程。

现在您可能会说我们可以进行同步,但我还没有在 Web 应用程序中看到使用同步来避免这种情况。那么弹簧靴究竟如何处理这个问题。

任何 Bean 的默认范围确实是 Singleton。接下来,所有 bean 都应该设计为无状态。如果一个 Bean 是无状态的,你不必担心多个线程访问同一个 Bean/同步。因为它们的数据不会被彼此修改。

无国籍是什么意思?解释它的简单方法是一种,您不应该拥有由不同线程修改的类级别字段。您的状态应存储在会话、存储库或由客户端存储中。

最后,澄清一些小事情,这与其说是一个Spring Boot问题,不如说是一个Spring Framework/Spring MVC问题。Bean 作用域是核心框架的一部分(Spring MVC 提供了更多作用域选项(。

最新更新