Java Spring, метод работает в Controller, но не работает в моем классе

141
31 марта 2019, 22:30

Есть класс моего потока:

@Component
public class MailThread extends Thread {
@Autowired
private MessageRepo messageRepo;
public MailThread() {}
@Override
public void run() {
    while (true) {
        try {
            Iterable<Message> messages;
            messages = messageRepo.findByTime("18:50");
            for(Message message : messages){
                System.out.println(message.toString());
            }
            System.out.println("minute");
            Thread.sleep(60000);
        } catch (InterruptedException ex) {
            System.out.println(ex.getMessage());
        }
    }
}
}

MessageRepo:

public interface MessageRepo extends JpaRepository<Message, Long> {
List<Message> findByTime(String time);
}

Я вызываю свой поток из Main:

@SpringBootApplication
public class Application {
public static void main(String[] args){
    SpringApplication.run(Application.class, args);
    new MailThread().run();
}
}

Но получаю такую ошибку:

Exception in thread "restartedMain" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: java.lang.NullPointerException
at project.components.MailThread.run(MailThread.java:39)
at project.Application.main(Application.java:12)
... 5 mor

Как раз там, где пытаюсь найти все сообщения из базы данных(messages = messageRepo.findByTime("18:50")) При вызове из обычного контроллера все работает. Подскажите пожалуйста, в чем проблема?

Answer 1

Аннотация @Autowire работает только в тех объектах, которых созданы контейнером Spring, а не оператором new.

READ ALSO
Поиск по словосочетанию SearchView &amp; ArrayList &amp; ListView

Поиск по словосочетанию SearchView & ArrayList & ListView

Использую SearchView и стандартный адаптер ArrayAdapter, с помощью adaptergetFilter()

156
Добавление/перезапись параметра в файл.properties

Добавление/перезапись параметра в файл.properties

У меня есть две программы на javaПервая авторизуется продавцом и создаёт в магазине товар

149
Создание pdf файла в eclipse [закрыт]

Создание pdf файла в eclipse [закрыт]

Я могу создать жар файл который будет создавать пдфМоя программа должна работать:

161
Имитация свайпа по кнопке

Имитация свайпа по кнопке

Допустим, есть некоторая кнопка и при нажатии на нее нужно создать свайп вправоКак реализовать подобное и возможно ли это?

151