DynamoDB NullPointerException Ошибка при сохранении - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь сохранить информацию в DynamoDB, но в настоящее время я получаю сообщение об ошибке java.lang.NullPointerException: null при использовании «save» в классе AccountHelper.

Я следовал руководству для начинающих, найденному на Github;https://github.com/derjust/spring-data-dynamodb

Вот мой класс модели;

@DynamoDBTable(tableName = "Users")
public class User {

  //  @Id
    private String _id;
    private String bloodGroup;
    private String firstName; // DO NOT change this, needs to stay firstName
    private String surname;
    private String email;
    private String password;
    private String addressline;
    private String postcode;
    private String latitude;
    private String longitude;

    public User() {}

    // More Constructors, Getters & Setters

Класс конфигурации DynamoDB;

@EnableDynamoDBRepositories(includeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {DynamoDBRepo.class})})
@Configuration
public class DynamoDBConfig {

    @Value("${amazon.aws.accesskey}")
    private String amazonAWSAccessKey;

    @Value("${amazon.aws.secretkey}")
    private String amazonAWSSecretKey;

    public AWSCredentialsProvider amazonAWSCredentialsProvider() {
        return new AWSStaticCredentialsProvider(amazonAWSCredentials());
    }

    @Bean
    public AWSCredentials amazonAWSCredentials() {
        return new BasicAWSCredentials(amazonAWSAccessKey, amazonAWSSecretKey);
    }

    @Primary
    @Bean
    public DynamoDBMapperConfig dynamoDBMapperConfig() {
        return DynamoDBMapperConfig.DEFAULT;
    }

    @Bean
    public DynamoDBMapper dynamoDBMapper(AmazonDynamoDB amazonDynamoDB, DynamoDBMapperConfig config) {
        return new DynamoDBMapper(amazonDynamoDB, config);
    }

    @Bean
    public AmazonDynamoDB amazonDynamoDB() {
        return AmazonDynamoDBClientBuilder.standard().withCredentials(amazonAWSCredentialsProvider())
                    .withRegion(Regions.US_EAST_1).build();
    }
}

Вот метод / класс, в котором я получаю ошибку;

    @Service
    public class AccountHelper {

    private DynamoDBRepo dynamoDBRepo;

    @Autowired
    private BCryptPasswordEncoder bCryptPasswordEncoder;

    public User create(String bloodGroup, String firstname, String surname, String email, String password, String addressline, String postcode) {
        // Getting the error here
        return dynamoDBRepo.save(new User(bloodGroup, firstname, surname, email, bCryptPasswordEncoder.encode(password), addressline, postcode)); 

    }

    // More methods below that i am not adding to keep this question to a minimum.

Вот мой контроллер;

@Controller
@Component
public class AccountController {

    @Autowired
    private AccountHelper Service_functions;

    @ResponseBody // Works
    @PostMapping(value = "/create/{bloodGroup}/{firstname}/{surname}/{email}/{password}/{addressline}/{postcode}")
    public String create( @PathVariable String bloodGroup , @PathVariable  String firstname, @PathVariable  String surname, @PathVariable  String email, @PathVariable  String password, @PathVariable  String addressline, @PathVariable  String postcode){
        User CreateUser = Service_functions.create(bloodGroup, firstname,  surname,  email,  password,  addressline,  postcode);
        System.out.println("this is working");
        return CreateUser.toString();
    }

свойства учетной записи;

spring.application.name=account-service
server.port=8020
eureka.client.service-url.defaultZone=http://localhost:8001/eureka/
amazon.aws.accesskey="" // i removed the keys
amazon.aws.secretkey=""

Любые предложения / помощь будут очень полезны, если я ошибаюсь.

1 Ответ

1 голос
/ 24 апреля 2019

Здесь необходимо исправить две вещи, исходя из предоставленных вами данных.

  • Добавить @Autowired аннотацию к вашей переменной dynamoDBRepo, чтобы ее можно было распознать как управляемый бин пружины.
  • На основании вашего комментария

то есть ошибка, говорящая о том, что он не может найти com.bdonor.accountservice.Repository.DynamoDBRepo

Вам необходимо включить com.bdonor.accountservice.Repository пакет как пакет репозитория JPA и включите сканирование репозитория jpa в вашей конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...