== Jakarta 上下文和依赖注入™
标准注解和Spring注解的区别:
Spring | jakarta.inject.* | jakarta.inject限制/描述 |
---|---|---|
@Autowired | @Inject | @Inject没有required属性,可以使用Java8的Optional代替 |
@Component | @Named / @ManagedBean | JSR-330没有提供组合模式,只有一种方式来标记命名组件 |
@Scope(“singleton”) | @Singleton | JSR-330默认范围类似Spring的prototype,但是为了和Spring的默认值保持一致,在Spring中定义的JSR-330 bean默认是singleton。 如果要使用其他的作用范围,那么需要使用Spring的@Scope注解。jakarta.inject也提供了一个@Scope注解。但是这个注解仅用来创建你自己的注解。(在jakarta企业api提供对应的使用范围) |
@Qualifier | @Qualifier / @Named | jakarta.inject.Qualifier只是一个用来构建自定义Qualifier的元注解。具体的字符串限定符(如带value的Spring的@Qualifier)jakarta.inject.Named关联。 |
@Value | - | 没有相同功能 |
@Required | - | 没有相同功能 |
@Lazy | - | 没有相同功能 |
ObjectFactory | Provider | jakarta.inject.Provider是Spring的ObjectFactory的直接替代品,它只使用了较短的get()方法名。它还可以与Spring的@Autowired结合使用,或者与无注解的构造函数和setter方法结合使用。 |
maven 依赖
xml
<!--https://github.com/jakartaee/inject-->
<dependencies>
<dependency>
<groupId>jakarta.inject</groupId>
<artifactId>jakarta.inject</artifactId>
<version>2.0.1</version>
</dependency>
</dependencies>