有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否可以使用guice同时@inject构造函数和成员?

这是我的密码:

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没有被初始化

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


共 (1) 个答案

  1. # 1 楼答案

    我认为直接注入字段和通过构造函数注入不是一个好主意。我建议总是通过构造函数进行注入,因为这样做会清楚地暴露依赖关系

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

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

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

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

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

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