gpt4 book ai didi

java - Guice 配置错误 没有绑定(bind)实现

转载 作者:行者123 更新时间:2023-12-02 11:06:40 25 4
gpt4 key购买 nike

我正在尝试保留单个 AmazonSNS 来访问 SNS。我编写了一个SNS模块(目前只添加了一个SNS)和一个用于发布消息的访问器。我的代码如下:

public class SNSModule extends AbstractModule {

@Override
protected void configure() {
}

@Provides
@Named("PSSNSRegionName")
private Regions getPSSNSRegionName(
@Named(BeanConstants.P_S_SNS_REGION) final String regionName) {
return Regions.fromName(regionName);
}

@Provides
@Singleton
@Named(BeanConstants.P_S_SNS)
public AmazonSNS getPSSNS(
@NonNull @Named("PaymentSuccessSNSRegionName") final Regions region,
final Config config) {
return AmazonSNSClientBuilder.standard()
.withCredentials(new AWSCredentialsProviderImpl(config.getSnsMaterialSet()))
.withRegion(region)
.build();
}

}

SNS 访问器如下:

@RequiredArgsConstructor(access = AccessLevel.PUBLIC, onConstructor = @__(@Inject))
public class SNSAccessor {

@Named(BeanConstants.P_S_SNS)
private final AmazonSNS snsClient;
private static final String COLON = ":";
private static final short ARN_LENGTH = 6;

public PublishResult publishToSNS(@NonNull final String snsTopicArn, @NonNull final String messageToPublish) {
try {
String[] arnParts = snsTopicArn.split(COLON);
Preconditions.checkArgument(
snsTopicArn.split(COLON).length == ARN_LENGTH,
"Expected arn to have 6 parts but found: " + arnParts.length
);
return snsClient.publish(snsTopicArn, messageToPublish);
} catch (InternalErrorException e) {
log.error("InternalErrorException publishing notification to SNS", e);
throw new RetriableException(e);
} catch (Exception e) {
log.error("Exception publishing notification to SNS", e);
throw new NonRetriableException(e);
}
}
}

我能够构建该包,但它在运行时引发了 ConfigurationException。

Caused by: com.google.inject.ConfigurationException: Guice configuration errors:

1) No implementation for com.amazonaws.services.sns.AmazonSNS was bound.
while locating com.amazonaws.services.sns.AmazonSNS
for parameter 0 at com.xyz.service.sns.SNSAccessor.<init>(SNSAccessor.java:29)

你能帮我找出我做错了什么吗?我已经正确安装了 main 中的 SNSModule。

最佳答案

Lombok 的 @RequiredArgsConstructoronConstructor 选项不适用于带注释的依赖项注入(inject)。您需要为这种情况显式编写一个构造函数。

关于java - Guice 配置错误 没有绑定(bind)实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56576895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com