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

Is it possible to @inject with guice the ctor and a member at the same time?

这是我的代码:

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 和 class 成员吗?

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

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

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

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

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

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

由于您的语法似乎是正确的,如果您确定此字段未真正实例化,则应验证项目中使用的绑定或 guice 库的版本