Попытка использовать com.google.common.base.Supplier с JPA, нулевой указатель на поставщика

Поэтому я хочу запомнить вызов в БД, который получает действительные имена пользователей, и просто обращаться к ним от поставщика, вместо того, чтобы делать дорогие вызовы в БД. Таким образом я попытался сделать этот класс:

открытый класс UserNameSupplier {

@Autowired
private UserRepository repo;

private final Supplier<Set<String>> userNamesSupplier;

public UserNameSupplier(){
    userNamesSupplier = Suppliers.memoizeWithExpiration(()
                    -> Lists.newArrayList(repo.findAll()).stream().map(LocUser::getUserName).collect(Collectors.toSet()),
            10, TimeUnit.MINUTES);

}

public Set<String> getValidUserNames(){
    return userNamesSupplier.get();
}

}

Запуск теста для этого (попытка вызвать getValidUserNames) получает этот стек вызовов.

java.lang.NullPointerException

com.company.boot.domain.middlemen.UserNameSupplier.lambda $ новый $ 0 (UserNameSupplier.java:30)

com.google.common.base.Suppliers $ ExpiringMemoizingSupplier.get (Suppliers.java:227)

com.company.application.domain.middlemen.UserNameSupplier.getValidUserNames (UserNameSupplier.java:39)

com.company.application.impl.ServiceImpl.getInformation (ServiceImpl.java:34)

com.company.application.impl.applicationServiceImplTest.testUserRepository (ServiceImplTest.java:79)

Репозиторий расширяет CrudRepository, поэтому я должен иметь возможность вызывать findAll и все это работает правильно? Что заставляет моего поставщика выйти из нуля?

0 ответов

Другие вопросы по тегам