Guice注入后出现Nullptr异常



我对Guice注入有点陌生。我的项目中出现了nullptr异常。

我怀疑这是因为我没有正确设置注入依赖项。

经过调查,它是由S3Driver.java文件中的invokeSomeMethod引起的,特别是lambdaHelper.invokeSomeMethod()

你能告诉我出了什么问题吗?

谢谢

S3Driver.java

// Constructor
public S3Driver() {
Injector injector = createInjector(new LambdaHelperModule(), new S3Module());
this.lambdaHelper = injector.getInstance(LambdaHelper.class);
}
...
lambdaHelper.invokeSomeMethod(); // Nullptr Exception

这是我的项目设置:

LambdaHelper.java

// Constructor
public LambdaHelper(S3Class s3Class) {
this.s3Class = s3Class;
}

S3Class.java

...
// Constructor
public S3Class(S3Presigner p, S3Client s) {this.p = p; this.s = s;};

LambdaHelperModule.java

public LambdaHelper provideLambdaHelper() {
S3Class s3Class = S3Class.builder()
.s3Presigner(S3Presigner.builder().build())
.s3Client(S3Client.builder().build())
.build();
return new LambdaHelper(s3Class);
}

S3Module.java

public S3Class provideS3Class() {
return new S3Class(S3Presigner.builder().build(),
S3Client.builder().build());
}

@Provides添加到您的提供程序方法

您的方法provideLambdaHelper()provideS3Class()肯定应该用@Provides进行注释。这将使Guice知道它们应该是您的提供者,因此当您想要注入此类实例时,Guice会调用它们。

所以你的代码应该是:

@Provides
public LambdaHelper provideLambdaHelper() {
...
}

@Provides
public S3Class provideS3Class() {
...
}

最新更新