在Spring MVC中使用@component注释来注释的Spring类的作用域是什么?

时间:2019-01-02 17:58:16

标签: spring spring-mvc

我正在阅读春季教程,并且正在研究bean的默认范围,因此默认情况下,范围仅是单调的。 但是,当我们在类中使用注释时,它们具有什么作用域?他们是否仅为JVM中的那些类创建单个对象?如果不是Web应用程序的工作原理,那么它将是线程安全的吗?

2 个答案:

答案 0 :(得分:2)

  

但是当我们在类中使用注释时,它们具有什么作用域?

除非您使用@Scope并指定其他范围,否则它们是单例。

  

它们仅为JVM中的那些类创建单个对象吗?

Spring为每个容器创建一个对象。这很重要,因为您的JVM可以一次运行多个Spring容器。

  

Web应用程序将是线程安全的吗?

由您决定。 Spring可以确保以线程安全的方式执行对组件的生命周期操作(例如,以线程安全的方式发布bean实例)。但是,Spring无法预测您的应用程序逻辑以及如何定义其正确性。因此,它不提供任何级别的同步,这可能是不够的或开销很大。

here是这方面的一个很好的讨论。

答案 1 :(得分:0)

Spring容器管理的每个bean默认情况下都具有Singleton范围,无论您使用批注还是xml,除非您不覆盖其默认值。