Guice вводит пустую строку вместо значения из метода @ProvidesJAVA

Программисты JAVA общаются здесь
Anonymous
Guice вводит пустую строку вместо значения из метода @Provides

Сообщение Anonymous »

У меня есть следующий класс, который использует внедрение конструктора, сгенерированного Lombok:

Код: Выделить всё

@RequiredArgsConstructor(onConstructor = @__(@Inject))
public class S3ModelAuditor implements ModelAuditor {

private final S3Client s3Client;
@Named(MODEL_AUDIT_BUCKET_NAME)
private final String bucketName;

... class methods...
}
Затем в моем модуле я привязываю реализацию к интерфейсу, а также имею необходимые методы поставщика для аргументов конструктора:

Код: Выделить всё

public class PluginModule extends AbstractModule {

public static final String MODEL_AUDIT_BUCKET_NAME = "MODEL_AUDIT_BUCKET_NAME";

@Override
protected void configure() {
super.configure();
bind(ModelAuditor.class).to(S3ModelAuditor.class);
}

@Provides
@Named(MODEL_AUDIT_BUCKET_NAME)
public String getModelAuditBucketName() {
String bucketName = System.getenv("MODEL_AUDIT_BUCKET");
Objects.requireNonNull(bucketName, "MODEL_AUDIT_BUCKET environment variable is required");
return bucketName;
}

@Provides
@Singleton
public S3Client getS3Client(@Named(PLUGIN_CREDENTIALS_NAME) final AwsCredentialsProvider credentialsProvider) {
return S3Client.builder()
.credentialsProvider(credentialsProvider)
.build();
}

... other provider methods ...
}
При вызове API объекта S3 put я получаю следующую ошибку, показывающую, что значение BucketName во время выполнения является пустой строкой (я понимаю, что это значение по умолчанию Guice для строки если явная привязка не найдена)

Код: Выделить всё

software.amazon.awssdk.core.exception.SdkClientException: Unable to marshall request to JSON: Bucket cannot be empty.
Да, я устанавливаю поле сегмента в запросе S3:

Код: Выделить всё

PutObjectRequest request = PutObjectRequest.builder()
.bucket(bucketName)
.key(key)
.build();
Есть идеи, почему метод поставщика getModelAuditBucketName не вызывается? Я проверил переменные среды, и значение установлено правильно (непустая строка). Использование Guice 7 с аннотациями Jakarta.


Подробнее здесь: https://stackoverflow.com/questions/787 ... des-method

Вернуться в «JAVA»