无法理解现场注入

时间:2012-01-07 12:33:04

标签: java dependency-injection guice

我正在努力了解依赖注射。

我阅读了很多文章但是,我读的越多,我就越感到困惑。

所以,我所做的是尝试理解the Google Guice page上发布的一些源代码。

我知道我们必须创建一个模块(例如:BillingModule),其中接口与其实现之间的绑定已经完成:

bind(BillingService.class).to(RealBillingService.class);

在实现类中,我们必须inject构造函数。

问题在于我无法理解the field injection

@Inject Connection connection;

问题很简单:这是什么意思?

2 个答案:

答案 0 :(得分:4)

这意味着您不像通常那样实例化对象:

Connection connection = //someConstructor 

但你宁愿通过其他方式获得它。该  @Inject 注释定义了注入点,您希望应用程序服务器根据配置为您实例化Connection对象。基本上这意味着您可以解除实例化Connection对象的复杂性,并且只能处理功能。

当然,如果您的应用程序服务器不支持字段注入或由于某种原因它失败,则@Inject注释不会有任何意义,您将最终得到一个空连接对象。

答案 1 :(得分:1)

注释Injector应注入值的实现类(构造函数,方法和字段)的成员。注射器满足以下注射要求:

在所有情况下,无论Java访问说明符(私有,默认,受保护,公共)如何,都可以注入成员。