Ошибка создания bean-компонента с именем «dynamodbClient»: не удалось разрешить метод поиска.
Ява: 20,0
Спрингбут: 3.0.1
Зависимость
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>aws-sdk-java</artifactId>
<version>2.20.115</version>
<scope>provided</scope>
</dependency>
Класс обслуживания
@Slf4j
@Service
public class DynamodbClient {
private final DynamoDbClient dynamoDbClient;
@Value("${amazon.aws.dynamodb.endpoint}")
private String endpoint;
@Value("${amazon.aws.dynamodb.region}")
private String region;
public DynamodbClient() {
this.dynamoDbClient =
DynamoDbClient.builder()
.endpointOverride(URI.create(endpoint))
.region(Region.of(region))
.build();
}
}
Примечание. Учетные данные для аутентификации не требуются. Dynamodb доступен через cli.
Контекст: для этого приложения основной базой данных является Cassandra, и фактическое требование должно быть реализовано через вызов API, но по какой-то причине мы этого не делаем, а вместо этого обновляем запись в dynamodb напрямую, и это выполняется время от времени.
1 ответ
КлассDynamodbClient
должна иметь аннотацию вместо@Service
. Чтобы правильно настроить определение компонента, вам придется использовать эту аннотацию. Кроме того, переменная экземпляраDynamoDbClient
не требуется.
Окончательный код будет:
@Configuration
public class DynamodbClient {
@Value("${amazon.aws.dynamodb.endpoint}")
private String endpoint;
@Value("${amazon.aws.dynamodb.region}")
private String region;
public DynamodbClient() {
this.dynamoDbClient =
DynamoDbClient.builder()
.endpointOverride(URI.create(endpoint))
.region(Region.of(region))
.build();
}
}
@Configuration
— это аннотация уровня класса, указывающая, что объект является источником определений компонента.
Более подробную информацию можно найти в документации Spring .