文档章节

JSR-330标准注解的限制

Oxidyc
 Oxidyc
发布于 2017/07/28 09:16
字数 514
阅读 15
收藏 0

va:http://blog.csdn.net/ethanwhite/article/details/51879871

当使用JSR-330标准的注解时,了解其和Spring注解的不同点也是十分必要的,参考如下表:

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

javax.inject.Provider是SpringObjectFactory的另一个选择,通过get()方法来代理,Provider可以和Spring的@Autowired组合使用

 

  • JSR330:Dependency Injection for Java
  • JSR250:Common Annotation for Java

 

  @Inject @Autowired @Resource
隶属包 javax.inject org.springframework.bean.factory javax.annotation
提供者 JSR330中的规范 Spring JSR250规范的实现
实现依赖注入 AutowiredAnnotationBeanPostProcessor CommonAnnotationBeanPostProcessor
使用

不加@Named注解,需要配置与变量名一致即可

@Inject

@Named(“mongo”)

private Mongo mongo;

有个required属性,可以配置为false,required=false后,当没有找到相应bean的时候,系统不抛错。

@Autowired

private Mongo Mongo;

一般会指定一个name属性

@Resource(name="userMapper")

private UserMapper userMapper;

相异之处

默认 autowired by type

可以通过@Qualifier显式指定 autowired by qualifier name

默认autowired by field name

如果autowired by field name失败,会退化为autowired by type

可以通过@Qualifier显式指定 autowired by qualifier name

如果autowired by qualifier name 失败,会退化为 autowired by field name。但是这时候如果autowired by field name失败,就不会再退化为autowired by type 了

via:http://blog.csdn.net/u012734441/article/details/51706504

© 著作权归作者所有

Oxidyc
粉丝 0
博文 37
码字总数 9001
作品 0
长春
程序员
私信 提问
加载中

评论(1)

Oxidyc
Oxidyc 博主
@红薯 编辑器的表格由bug,合并单元格不好用啊
Using JSR 330 Standard Annotations

7.11 Using JSR 330 Standard Annotations 从spring3.0开始,spring提供对JSR-330标准注解的支持.这些注解同spring注解的扫描方式相同.你只需将在你的类路径里添加相关的jar包. 如果你使用Mav...

流光韶逝
2016/09/26
12
0
Hasor-0.0.1.20130831-M1,Hasor首次发布

Hasor首次发布包含Hasor-Core和Hasor-MVC两个组件。 Hasor-Core: 01.)基于COC原则。基本的开发不需要任何配置。 02.)支持模块生命周期调度;支持模块依赖循环检测;启动时提示模块依赖树。 ...

哈库纳
2013/08/31
402
2
Java 必须掌握的 12 种 Spring 常用注解!

1.声明bean的注解 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在数据访问层使用(dao层) @Controller 在展现层使用,控制器的声明(C) 2.注入b...

Mr_zebra
2018/10/24
18
0
Spring 之 IoC 源码分析 (基于注解方式)

一、 IoC 理论 IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。 二、IoC方式 Spring为IoC提供了2种方式,一种是基于xml...

星爵22
昨天
112
0
Spring核心——注解的后置处理器

实际上Ioc容器中的大量功能都是通过后置处理器实现的,这里介绍几个主要的处理器。 RequiredAnnotationBeanPostProcessor 官方的一些功能就是用后置处理器的方式实现的,例如RequiredAnnotat...

孟飞阳
2018/08/01
42
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
今天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
今天
6
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
今天
4
0
Python机器学习之数据探索可视化库yellowbrick

背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维。陆续使用过plotly、seaborn,...

yeayee
今天
8
0
重读《学习JavaScript数据结构与算法-第三版》- 第5章 队列

定场诗 马瘦毛长蹄子肥,儿子偷爹不算贼,瞎大爷娶个瞎大奶奶,老两口过了多半辈,谁也没看见谁! 前言 本章为重读《学习JavaScript数据结构与算法-第三版》的系列文章,主要讲述队列数据结...

胡哥有话说
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部