gpt4 book ai didi

java - 如何使用 Dagger 2 注入(inject) Servlet?

转载 作者:IT老高 更新时间:2023-10-28 20:42:15 26 4
gpt4 key购买 nike

我对 Dagger 1 here 提出(并回答)了同样的问题.现在 ObjectGraph.inject 不再存在,我该如何为 Dagger 2 做类似的事情。

这个问题可以概括为:

如果对象必须由不同的框架创建,您如何进行成员注入(inject)? (在这种情况下,是一个 Servlet 容器)。

最佳答案

我一直在尝试回答同样的问题。我认为我已经接近它“应该”如何理想地工作,但我只是在 GitHub 项目周围徘徊,并试图根据那里的信息碎片来弄清楚它,因为很多Dagger 2 的文档仍在编写中(截至本周)。

我下面的示例代码实际上是针对 Android Activity 的,但我相信同样的方法应该适用于您询问的 servlet。

将 MembersInjector<...> 添加到您的 @Component 接口(interface);例如,在下面的组件中,我为 MainActivity 类添加了一个:

package ...;

import javax.inject.Singleton;
import dagger.Component;
import dagger.MembersInjector;

@Singleton
@Component(modules = { PlaygroundModule.class })
public interface MainComponent {
Wizard createWizard();
MembersInjector<MainActivity> mainActivityInjector();
}

然后在你想被成员注入(inject)的类中,在对象创建之后的适当位置但在你需要使用注入(inject)的成员之前,你需要创建组件并使用成员注入(inject):

package ...;

// other imports
import javax.inject.Inject;
import dagger.MembersInjector;

public class MainActivity extends ActionBarActivity {

@Inject
Wizard wizard;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

MainComponent c = DaggerMainComponent.create();
c.mainActivityInjector().injectMembers(this);

// other code...
}
}

我不清楚的一件事是这种在应该注入(inject)的对象内创建组件的模式是否正确。感觉不太对劲,但是它仍然非常灵活,因为您只是紧密地绑定(bind)到组件而不是模块。所以也许这是正确的方法,但也许有点不对。

关于java - 如何使用 Dagger 2 注入(inject) Servlet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29496006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com