我知道当我们使用@Autowired
with时默认的 bean 范围是单例的@Component
。
但是如果我们将 JSR-330@Inject
与 spring 一起@Component
使用(不使用@Scope
or @Singleton
)呢?
我知道当我们使用@Autowired
with时默认的 bean 范围是单例的@Component
。
但是如果我们将 JSR-330@Inject
与 spring 一起@Component
使用(不使用@Scope
or @Singleton
)呢?
@Inject 或 @Autowired之间没有区别
两个注释的工作方式与 Spring 决定支持一些 JSR-299 注释的方式相同,除了它们自己的注释
注意JSR-299建立在 JSR-330 之上
JSR-299(Java 上下文和依赖注入),以 Gavin King 为主导,使用 JSR-330 作为基础,并通过模块化、横切方面(装饰器、拦截器)、自定义范围或类型安全注入功能显着增强它。JSR-299 位于 JSR-330 之上
默认情况下,所有spring bean都是单例的。@Component
单例 bean 与开创性的四人帮 (GoF) 模式书中定义的单例模式完全不同。GoF Singleton 对对象的范围进行硬编码,这样每个 ClassLoader 将永远创建一个且只有一个特定类的实例。Spring 单例的范围最好按照每个容器和每个 bean 来描述。这意味着如果您在单个 Spring 容器中为特定类定义一个 bean,那么 Spring 容器将创建该 bean 定义所定义的类的一个且只有一个实例。单例范围是 Spring 中的默认范围