java - 是否可以同时@inject guice ctor和成员?

标签 java dependency-injection guice

这是我的代码:

public class RoutingRequestUrlRepository implements IRoutingRequestUrlRepository {

    String fileName;
    RandomAccessFile randomAccessFile;
    int chunkSizeInLines;
    private IFileHandler<String> fileHandler;
    @Inject GlobalSettings globalSettings;


    @Inject
    public RoutingRequestUrlRepository(@Named("requests_file") String fileName,
                                       @Named("request_sample_file") IFileHandler samplesFileHandler) {
.....

为什么globalSettings没有初始化?

我的语法正确吗?我可以同时 @Inject ctor 和类成员吗?

最佳答案

我认为直接注入(inject)字段和通过构造函数注入(inject)都不是一个好主意。我建议始终通过构造函数注入(inject),因为这样做会明显暴露依赖关系。

无论如何,像您所做的那样注入(inject)字段对于 guice 来说是正确的,您可以将此字段注入(inject)构造函数或直接注入(inject)。

您还可以使用方法注入(inject)来实例化您的字段,如下所示:

@Inject
public void setGlobalSettings(GlobalSettings settings) {
    this.settings = settings; 
}

您还可以注入(inject) Injector 类,并显式调用 injector.injectMembers( this );

所有这些可能性都在这里解释:https://github.com/google/guice/wiki/Injections

由于您的语法似乎是正确的,如果您确定该字段没有真正实例化,您应该验证项目中使用的绑定(bind)或 guice 库的版本

关于java - 是否可以同时@inject guice ctor和成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34640350/

相关文章:

php - 在不创建依赖项的情况下避免魔数(Magic Number)

java - Guice - 如何提供一个 API,支持灵活的可插拔策略实现及其自己的绑定(bind)?

java - 如何将 Jackson ObjectMapper 与 Guice/Jersey Hook

guice - 制作自定义 @Inject 注释

java - Android Dateformatter 问题

java - 在ArrayBlockingQueue中,为什么将final成员字段复制到本地final变量中?

forms - 是否可以使用 scaldi 依赖注入(inject)注入(inject) scala 对象?

c# - 关于国际奥委会的问题

java.lang.NullPointerException 和未知来源

java - OpenHFT/Chronicle map 失败