Spring 如果我们使用@Inject和@Component,那么默认的bean作用域是什么?

Spring 如果我们使用@Inject和@Component,那么默认的bean作用域是什么?,spring,spring-annotations,jsr330,Spring,Spring Annotations,Jsr330,当我们将@Autowired与@Component一起使用时,我知道默认的bean范围是singleton 但是,如果我们使用JSR-330的@Inject和spring的@组件(不使用@Scope或@Singleton)呢?两者之间没有区别 这两个注释的工作方式与Spring决定支持JSR-299注释的方式相同 注释建立在JSR-330之上 以Gavin King为首的JSR-299(Java上下文和依赖项注入)使用JSR-330作为基础,并通过模块化、交叉方面(装饰器、拦截器)、自定义范围或

当我们将
@Autowired
@Component
一起使用时,我知道默认的bean范围是singleton


但是,如果我们使用JSR-330的
@Inject
和spring的
@组件
(不使用
@Scope
@Singleton
)呢?

两者之间没有区别

这两个注释的工作方式与Spring决定支持JSR-299注释的方式相同

注释建立在JSR-330之上

以Gavin King为首的JSR-299(Java上下文和依赖项注入)使用JSR-330作为基础,并通过模块化、交叉方面(装饰器、拦截器)、自定义范围或类型安全注入功能对其进行了显著增强。JSR-299是在JSR-330之上分层的

作为
@Component
,所有组件默认为单例

单例bean与开创性的四人帮(GoF)模式书中定义的单例模式截然不同。GoF单例硬编码对象的作用域,这样每个类加载器就只能创建一个特定类的实例。Spring单例的范围最好按照容器和bean来描述。这意味着,如果您在单个Spring容器中为特定类定义了一个bean,那么Spring容器将创建该bean定义的类的一个且仅一个实例单例范围是Spring中的默认范围


组件的范围并不取决于您使用哪个注释来注入它们。默认情况下,Springbean是单例的。