首页 文章

Spring 天的单身 beans

提问于
浏览
5

我知道这个问题可能听起来很幼稚,但我对Web应用程序中bean的范围感到困惑 . 我知道,对于每个请求,容器会产生一个新线程,类似于Spring Web应用程序,每个请求都会生成一个新线程,那么为什么建议我将控制器定义为单例服务,不应该是范围这些bean是原型,因为每个请求即线程都有自己的控制器实例,服务可以使用 .

请赐教 .

4 回答

  • 1

    那将是巨大的开销 . 如果您使代码正确地保证线程安全,那么每个请求都没有理由需要自己的服务bean,这通常意味着不会在bean上保留任何每个请求状态 .

  • 3

    即使创建了新线程(或根据配置重新使用),也会重新使用控制器和服务实例 . 如果控制器和服务设计得很好,它们可以在请求和不可变的情况下是无状态的,这将使它们成为线程安全的 . 当它们的状态在创建后不会改变时,它也会导致更少的对象创建 .

  • 0

    我认为这取决于你是否需要在bean中存储任何状态 . 通常,我编写单例,以便它们不包含任何状态,仅用于计算业务逻辑 . 如果没有需要管理的状态,那么让所有线程共享一个单例实例是可以接受的 .

  • 6

    https://gottalovedev.wordpress.com/2014/11/23/bean-scope/

    给这个读一读 . 我相信这会有所帮助 .

相关问题