首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解javax.inject示例代码吗?

了解javax.inject示例代码吗?
EN

Stack Overflow用户
提问于 2018-08-07 19:02:28
回答 2查看 8.3K关注 0票数 4

我非常感谢有人帮助我理解这个javax示例代码,以及为什么@inject注释实际上是有用的/它所做的事情。下面的代码来自:来自此源的代码

代码语言:javascript
复制
class Stopwatch {
 final TimeSource timeSource;
 @Inject Stopwatch(TimeSource TimeSource) {
   this.TimeSource = TimeSource;
 }
 void start() { ... }
 long stop() { ... }
}

首先,我认为(我希望)有一个错误,"TimeSource“参数应该是"timeSource",因为秒表类中的字段是CamelCase。

不过,我真正不明白的是@inject注释实际上在做什么!?它等同于这个构造函数吗?:

代码语言:javascript
复制
class Stopwatch {
 final TimeSource timeSource;
 Stopwatch(TimeSource timeSource) {
 this.timeSource = timeSource;
 }
}

上面是我如何处理添加依赖项的方法,所以我希望我是正确的@inject关键字就是这样做的.还是我离得太远了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-08 09:59:01

如果您已经了解了Spring的@Autowired注释,那么上面的代码就没有什么不同了。

代码语言:javascript
复制
class Stopwatch {
 final TimeSource timeSource;
 @Inject Stopwatch(TimeSource TimeSource) {
   this.TimeSource = TimeSource;
 }
 void start() { ... }
 long stop() { ... }
}

在这里,@Inject表示在创建Stopwatch实例时,应该通过该构造函数实例化它,并传入一个可分配给TimeSource的实例。

与调用构造函数或工厂的程序员不同,称为依赖注入器的工具将依赖项传递给对象。

因此,如前所述,依赖注入器将确保在创建TimeSource实例时注入Stopwatch实例。

票数 6
EN

Stack Overflow用户

发布于 2020-07-29 08:26:10

迟答,但可能对其他人有帮助。@Inject注释本身不起任何作用。

您需要一个对注释起作用的框架。

例如Guice

代码语言:javascript
复制
Injector injector = Guice.createInjector();
YourObject yo = injector.getInstance(YourObject.class);

注释在javax中以提供一个标准名称,因此理论上我可以将Guice替换为其他东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51733734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档