Search code examples
spring-bootautowiredspring-data-gemfiregeode

getting @autowired intance null when try trying to do operation on it,throwing null pointer exception


I am trying to save data on gemfire using crud repository. I have created one operation class to call save method of repository but at autowired instance I am getting null pointer exception. Below is my code:

public interface GeodeRepository extends CrudRepository<KeyValueBean, String> {

    @Override
    public KeyValueBean findOne(String name);

    @Override
    public <S extends KeyValueBean> Iterable<S> save(Iterable<S> entities);
}

@EnableGemfireRepositories(basePackageClasses = GeodeRepository.class)
@EnableAutoConfiguration
@Configuration
public class Operations {

    @Autowired
    private GeodeRepository repository;

    public void saveKeyValueData(KeyValueBean keyValueBean) {
        System.out.println("Repository is : " + repository);
        repository.save(Arrays.asList(keyValueBean)); // <--- i am getting
                                                        // repository as null so
                                                        // getting null pointer
                                                        // exception
    }
}

Solution

  • When we @Autowired any class make sure, you have declared that class as a @Component.

    for example:

    @Component
    public class Operations {
    
        @Autowired
        private GeodeRepository repository;
    
        public void saveKeyValueData(KeyValueBean keyValueBean) {
            System.out.println("Repository is : " + repository);
            repository.save(Arrays.asList(keyValueBean)); 
        }
    }
    

    and try using @Autowired to Operation class to your class in which class your are calling your saveKeyValueData() method.