Похоже, вы не запускаете ваше приложение как приложение с начальной загрузкой, которое не позволяет создавать компоненты в вашем хранилище, что приводит к исключению нулевого указателя при попытке вызвать метод хранилища getAll()
Это может быть добавлено в ваш основной класс следующим образом:
@SpringBootApplication(scanBasePackages = *your base package, eg com.test.application*) // this is not essential but required if you use a non standard directory structure
public class TestMain {
public static void main(String[] args) {
SpringApplication.run(TestMain.class, args);
// you will now need to access your test class through a spring bean - see below for an example using a controller endpoint:
}
}
// in TestController
@RestController
class TestController {
private final Testclass testClass;
@Autowired
public TestController(TestClass testClass) {
this.testCLass = testClass
}
// now a simple endpoint to get the data, call this in postman to see the result
@GetMapping(value = "/")
public ResponseEntity<List<HistoryUpload>> getHsitoryList() {
return new ResponseEntity.ok().body(TestClass.getvalue());
}
}
Также избегайте перехвата общих исключений в вашем блоке try catch, как правило, это плохая практика в соответствии со стандартом java-сертификата, особенно когда вы перехватываете NullPointerExceptions (их никогда не поймать, читайте подробнее здесь )
Также в будущем рассмотрите возможность ведения журналов, так как вызов трассировки стека e.print может быть дорогим для производительности, плюс регистраторы предлагают больше настроек, читайте здесь
Я бы посоветовал изучить использование специального класса обработчика исключений, вы можете прочитать о них здесь
Примечание:
Springможет быть привередливым, когда дело доходит до структуры каталогов, убедитесь, что все компоненты (контроллеры, репозиторий, сервисы и т. д.)в каталогах ниже основное приложение:
com
your
app
Main.java
controller / your controllers
repositories / your repos
....