为了统一各种依赖注入框架的编程模型,JCP发布了Java依赖注入规范,JCP将其称为JSR-330.从Spring3开始,Spring已经开始兼容该注入模型
@Inject是JSR-330的核心部件。该注解几乎可以完全替代Spring的@Autowried注解。
@Inject private Foo foo
和@Autowried一样,@Inject可以自动装配属性、方法和构造器。
但和@Autowried不同的是,@Inject没有required属性。因此,@Inject的注解标注的依赖关系必须存在,如果不存在,则会抛出异常。
除了@Inject注解,JSR-330还提供了另外一种技巧,语气直接注入一个引用,不如要求@Inject注入一个Provider。Provider借口可以实现Bean引用的延迟注入以及注入Bean的多个实例等功能。
例如,我们有一个KnifeJuggler类需要注入一个或者多个Knife的实例。假设Knife Bean的作用域为prototype(非单例),下面的KnifeJuggle的构造器将获得5哥KnifeBean。
private Set<Knife> knives; @Inject public KnifeJuggle(Provider<Knife> knifeProvider){ knives = new HashSet<Knife>(); for (int i=0;i<5;i++){ knives.add(knifeProvider.get()); } }
KnifeJuggler将获得一个Provider<Knife>,而不是在构造器中获得一个knife实例。这个时候,只有Provider被注入进去;在调用knifeprovide.get()方法钱,实际的knife并没有被注入进去。调用5次,放入5个不同的knife对象。
限定@Inject所标注的属性
与@autowired的限定@qualifier类似,@Inject的限定为@Named。
@Inject @Named(”guitar“) private Foo foo;
Spring的@qualifier与JSR-330的@Named的关键区别在语义层面。@qualifier注解是缩小所拼配bean的选择范围(默认是Bean的id),而@Name通过Bean的Id来标示的。
创建自定义的JSR-330的Qualifier
与@Autowried的自定义Qualifier几乎一样,唯一区别注解的导入生声明。如下
//spring的@Autowried的@Qualifier自定义声明 import org.springframework.beans.factory.annotation.Qualifier; //JSR-330 @Inject的@Qualifier自定义声明 import javax.inject.Qualifier;
相关推荐
sisu-inject-bean-1.4.2.jar
spring-framework-3.0.5.RELEASE-dependencies 好不容易找到了,赶紧分享一下 因为不能大于20M,共分了8个包,都是独立的,我列了目录,可以只下载需要的包,这是1号包: 1号包: edu.emory.mathcs.backport edu.oswego.cs....
javax-inject-1.0-201002241208.jar.zip
sisu-inject-plexus-1.4.2.jar
# JNDI-Inject-Exploit ## 免责声明 本工具仅面向**合法授权的企业安全测试**,如您需测试本工具的可用性请自行搭建靶机环境,在使用本工具进行检测时,您应确保该行为符合当地的法律法规,并且已经取得了足够的...
linux-inject-master,linux注入so,类似于windows的远程线程注入,函数hook等; https://github.com/gaffe23/linux-inject
spring-framework-3.0.5.RELEASE-dependencies 好不容易找到了,赶紧分享一下 因为不能大于20M,共分了8个包,都是独立的,我列了目录, 可以只下载需要的包,这是5号包: 1号包: edu.emory.mathcs.backport edu.oswego....
spring-framework-3.0.5.RELEASE-dependencies 好不容易找到了,赶紧分享一下 因为不能大于20M,共分了8个包,都是独立的,我列了目录, 可以只下载需要的包,这是4号包: 1号包: edu.emory.mathcs.backport edu.oswego....
spring-framework-3.0.5.RELEASE-dependencies 好不容易找到了,赶紧分享一下 因为不能大于20M,共分了8个包,都是独立的,我列了目录, 可以只下载需要的包,这是3号包: 1号包: edu.emory.mathcs.backport edu.oswego.cs...
spring-framework-3.0.5.RELEASE-dependencies 好不容易找到了,赶紧分享一下 因为不能大于20M,共分了8个包,都是独立的,我列了目录, 可以只下载需要的包,这是2号包: 1号包: edu.emory.mathcs.backport edu.oswego....
spring-framework-3.0.5.RELEASE-dependencies 好不容易找到了,赶紧分享一下 因为不能大于20M,共分了8个包,都是独立的,我列了目录, 可以只下载需要的包,这是8号包: 1号包: edu.emory.mathcs.backport edu.oswego.cs...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
fx-inject.zip,使用jboss weldjavax的上下文和依赖注入(cdi)和javafx。为javafx应用程序注入注释和cdi集成
html-webpack-inject-attributes-plugin 添加自定义属性以注入标签 安装 npm install html - webpack - inject - attributes - plugin - D 用 请在html-webpack-plugin之后使用它,尤其是在webpack2 +中。 添加到...
官方jar包 javax-inject.jar
支持注入,spring ,类别注入,很好用的jar包,还有原码和文档
自动配置Spring 准生产的应用监控 无代码声称和xml配置 SpringBoot的优缺点 优点 快速构建项目 对主流开发框架的无配置集成 项目可独立运行,无需外部依赖Servlet容器 提供...
rollup-plugin-postcss-inject-to-css rollup-plugin-postcss的 inject 模式下,把导出后组件引用的xxx.scss.js转换为xxx.css进行引入 本插件依赖 ,主要是针对组件按需加载的场景下进行的优化适配 Install npm: npm...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
前端开源库-inject-html注入HTML,节点模块,用于在