JSR-330 规范与spring boot

Java依赖注入标准(JSR-330,Dependency Injection for Java)1.0 规范主要是面向依赖注入使用者,而对注入器实现、配置并未作详细要求。目前 Spring 、Guice 已经开始兼容该规范,JSR-299(Contexts and Dependency Injection for Java EE platform,参考实现 Weld )在依赖注入上也使用该规范。JSR-330 规范并未按 JSR 惯例发布规范文档,只发布了规范 API 源码。

从Spring 3.0开始,Spring开始支持JSR-330标准的注解。这些注解和Spring注解扫描的方式是一直的,开发者只需要引入javax.inject即可。

​ javax.inject

​ javax.inject

​ xxx

JSR-330中的标准注解与Spring中的注解的对应关系如下:

SpringJSR-330说明
@Autowired@Inject@Inject注解没有required属性,但是可以通过Java 8的Optional取代
@Component@NamedJSR_330标准并没有提供复合的模型,只有一种方式来识别组件
@Scope(“singleton”)@SingletonJSR-330默认的作用域类似Spring的prototype,然而,为何和Spring的默认保持一致,JSR-330标准中的Bean在Spring中默认也是单例的。如果要使用非单例的作用域,开发者应该使用Spring的@Scope注解。java.inject也提供一个@Scope注解,然而,这个注解仅仅可以用来创建自定义的作用域时才能使用。
@Qualifier@Qualifier/@Namedjavax.inject.Qualifier仅仅是一个元注解,用来构建自定义限定符的。而String的限定符(比如Spring中的@Qualifier)可以通过javax.inject.Named来实现
@Value-不等价
@Required-不等价
@Lazy-不等价
ObjectFactoryProviderjavax.inject.Provider是Spring ObjectFactory的另一个选择,通过get()方法来代理,Provider可以和Spring的@Autowired组合使用

为什么要使用JSR-330提供的标准注解

JSR-330相当于接口,而Spring是一种实现,在编程中一般面向接口,而不依赖具体实现。

参考

Spring核心技术(十)——JSR-330标准注解 Java 依赖注入标准(JSR-330)简介

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值