我对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() {
...
}