Fehler beim Erstellen von Bean mit dem Namen 'DynamodbenHancedClientLocal' in der Klasse Path -Ressource [com/sgeidatareJava

Java-Forum
Anonymous
 Fehler beim Erstellen von Bean mit dem Namen 'DynamodbenHancedClientLocal' in der Klasse Path -Ressource [com/sgeidatare

Post by Anonymous »

Ich mache zum ersten Mal eine Dynamodb -Verbindung. My goal is to save some data in dynamodb and I am using AWS SDK2 to doing so below is the error I am getting Few things I have tried
  • Defined a @configuration class with DynamoDb beans
  • Use constructor injection or @PostConstruct for DataRepository
Konsolenlog < /strong> < /p>

Code: Select all

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataRepository' defined in file [C:\Users\V48252\Documents\s-gei-data-reconciliation-api\target\classes\com\aflac\eib\sgeidatareconciliation\repository\DataRepository.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'dynamoDbEnhancedClientLocal' defined in class path resource [com/aflac/eib/sgeidatareconciliation/config/DynamoDBConfig.class]: Failed to instantiate [software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient]: Factory method 'dynamoDbEnhancedClientLocal' threw exception with message: software/amazon/awssdk/utils/ProxyConfigProvider
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(Constrg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1222) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1188) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1123) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:987) ~[spring-context-6.2.8.jar:6.2.8]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) ~[spring-context-6.2.8.jar:6.2.8]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.4.7.jar:3.4.7]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) ~[spring-boot-3.4.7.jar:3.4.7]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-3.4.7.jar:3.4.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) ~[spring-boot-3.4.7.jar:3.4.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361) ~[spring-boot-3.4.7.jar:3.4.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350) ~[spring-boot-3.4.7.jar:3.4.7]
at com.aflac.eib.sgeidatareconciliation.SGeiDataReconciliationApiApplication.main(SGeiDataReconciliationApiApplication.java:10) ~[classes/:na]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dynamoDbEnhancedClientLocal' defined in class path resource [com/aflac/eib/sgeidatareconciliation/config/DynamoDBConfig.class]: Failed to instantiate [software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient]: Factory method 'dynamoDbEnhancedClientLocal' threw exception with message:  software/amazon/awssdk/utils/ProxyConfigProvider
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:657) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:489) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1375) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1205) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1745) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1628) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-6.2.8.jar:6.2.8]
... 21 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient]: Factory method 'dynamoDbEnhancedClientLocal' threw exception with message: software/amazon/awssdk/utils/ProxyConfigProvider
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:199) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiateWithFactoryMethod(SimpleInstantiationStrategy.java:88) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:168) ~[spring-beans-6.2.8.jar:6.2.8]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-6.2.8.jar:6.2.8]
... 35 common frames omitted
Caused by: java.lang.NoClassDefFoundError: software/amazon/awssdk/utils/ProxyConfigProvider
at software.amazon.awssdk.http.apache.ProxyConfiguration.(ProxyConfigurationCaused by: java.lang.ClassNotFoundException: software.amazon.awssdk.utils.ProxyConfigProvider
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na]
...  56 common frames omitted

dynamodbconfig.java[/b]
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient;
//import software.amazon.awssdk.http.apache.ApacheHttpClient;
import software.amazon.awssdk.http.apache.ApacheHttpClient;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;

@Configuration
public class DynamoDBConfig {

// @Value("${aws.region}")
private String region ="us-east-1";

// @Value("${aws.accessKey}")
private String accessKey = "valueOfAccessKey";

// @Value("${aws.secretKey}")
private String secretKey ="valueOfSecretKey";

// @Profile("local")
@Bean
public DynamoDbEnhancedClient dynamoDbEnhancedClientLocal() {
DynamoDbClient dynamoDbClient = DynamoDbClient.builder()
.region(Region.of(region))
.credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secretKey)))
.httpClient(ApacheHttpClient.builder().build())
.build();
return DynamoDbEnhancedClient.builder().dynamoDbClient(dynamoDbClient).build();
}

@Profile({"dev", "val" , "stg" , "prd"})
@Bean
public DynamoDbEnhancedClient dynamoDbEnhancedClientCloud() {
DynamoDbClient dynamoDbClient = DynamoDbClient.builder()
.region(Region.of(region))
.credentialsProvider(DefaultCredentialsProvider.create())
.httpClient(ApacheHttpClient.builder().build())
.build();
return DynamoDbEnhancedClient.builder().dynamoDbClient(dynamoDbClient).build();
}

}

< /code>
** datarepository, java ** < /p>
import com.aflac.eib.sgeidatareconciliation.model.Data;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable;
import software.amazon.awssdk.enhanced.dynamodb.TableSchema;

import java.util.Optional;

@Repository
@RequiredArgsConstructor
public class DataRepository {

@Value("${aws.tableName}")
private String tableName;

private DynamoDbTable dataTable;

private final DynamoDbEnhancedClient dynamoDbEnhancedClient;
//
//
//
// public DataRepository(DynamoDbEnhancedClient client) {
// this.table = client.table(tableName, TableSchema.fromBean(Data.class));
// // table.createTable();
// }

@PostConstruct
public void init(){
dataTable = dynamoDbEnhancedClient.table(tableName, TableSchema.fromBean(Data.class));
}

// CREATE or UPDATE
public void save(Data data) {
dataTable.putItem(data);
}

//READ
public Optional findById(String oppRecId) {
Data data = dataTable.getItem(r -> r.key(k -> k.partitionValue(oppRecId)));
return Optional.ofNullable(data);
}

//DELETE
public void delete(String oppRecId) {
dataTable.deleteItem(r -> r.key(k -> k.partitionValue(oppRecId)));
}

}

< /code>
**sgeidatareConciliationServiceImpl.java ** < /p>
import com.aflac.eib.lib.exception.custom.base.ExceptionType;
import com.aflac.eib.lib.logging.AppLogger;
import com.aflac.eib.sgeidatareconciliation.exception.DataProcessingException;
import com.aflac.eib.sgeidatareconciliation.mapper.DataMapper;
import com.aflac.eib.sgeidatareconciliation.model.Data;
import com.aflac.eib.sgeidatareconciliation.repository.DataRepository;
import com.aflac.eib.sgeidatareconciliation.service.SGeiDataReconciliationService;
import com.aflac.eib.sgeidatareconciliation.util.Utils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.Optional;

@Service
@RequiredArgsConstructor
public class SGeiDataReconciliationServiceImpl implements SGeiDataReconciliationService {

private final DataRepository dataRepository;

// public SGeiDataReconciliationServiceImpl(DataRepository dataRepository){
// this.dataRepository = dataRepository;
// }

@Override
public Data saveData(Data newData) throws DataProcessingException{

try {
AppLogger.debug(SGeiDataReconciliationServiceImpl.class,"Saving data with opptRecId: {}" , newData.getOpptRecordId());
Data exisitngdata = dataRepository.findById(newData.getOpptRecordId()).orElse(null);

if(exisitngdata !=null) {
AppLogger.debug(SGeiDataReconciliationServiceImpl.class, "Record with given opptRecId already exist, Updating record ! ");
}else{

AppLogger.debug(SGeiDataReconciliationServiceImpl.class, "Record with given opptRecId already exist, Updating record ! ");
}
Data merged = DataMapper.merge(exisitngdata,newData);

dataRepository.save(merged);

} catch (Exception e) {
AppLogger.error(SGeiDataReconciliationServiceImpl.class," Failed to persist data into geihub ");
throw new DataProcessingException("Failed to persist data into GEIHub :",e , ExceptionType.TECHNICAL);
}

return null;
}

@Override
public Optional getDataById(String opptRecId) {

try {
AppLogger.debug(SGeiDataReconciliationServiceImpl.class," Fetching data with opptRecId :" + opptRecId);

if(Utils.isNotNullOrEmpty(opptRecId)){
return dataRepository.findById(opptRecId);
}

}catch (Exception e){
AppLogger.error(SGeiDataReconciliationServiceImpl.class,"Failed to get data for the given ID" + opptRecId);
}

return Optional.empty();
}

@Override
public void deleteData(String opptRecId) {

}
}

< /code>


4.0.0

com.aflac.eib.service
eib-services-parent

2.0.92-RELEASE

com.aflac.eib
s-gei-reconciliation
0.0.1-SNAPSHOT
s-gei-data-reconciliation-api
Project to Update G-hub Schema for the EPS System














17

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post