Приложение состоит из нескольких полей, основные "message", "time", "email". Цель сделать подобие будильника. На данном этапе я пишу сообщение, время и email куда отправить, и у меня сразу улетает письмо с сообщением, при этом запись сохраняется. Подскажите, как обработать событие после сохранения, для того чтобы письмо улетало в соответствии с указанным временем. Может какая аннотация или метод. P.S. я нубас )
@Controller
public class NotificationController {
@Autowired
private CommandRepository commandRepository;
@Autowired
private NotificationService notificationService;
@GetMapping("/")
public String command(Map<String,Object> model)
{
Iterable<Command> commands = commandRepository.findAll();
model.put("commands", commands);
return "command";
}
@PostMapping
public String add(@RequestParam String name,
@RequestParam String message,
@RequestParam String time,
@RequestParam String email,
Map<String, Object> model)
{
Command command = new Command(name, message, time, email);
commandRepository.save(command);
notificationService.sendNotification(command);
Iterable<Command> commands = commandRepository.findAll();
model.put("commands", commands);
return "command";
}
}
Боюсь, что решение не очень простое. Подробнее можете почитать вот тут: Оповещения в определённое время Java.
Если вы используете Spring и решили не использовать Quartz, то рекомендую в качестве пула использовать ThreadPoolTaskExecutor.
@Configuration
@EnableAsync
public class AsyncConfiguration {
@Bean
public ThreadPoolTaskExecutor executor(){
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setCorePoolSize(5); //TODO configurable properties
threadPoolTaskExecutor.setMaxPoolSize(10); //TODO configurable properties
threadPoolTaskExecutor.setWaitForTasksToCompleteOnShutdown(true);
return threadPoolTaskExecutor;
}
}
И затем подцепить этот бин в компоненте.
Решил вопрос, просто добавив метод
@Scheduled(cron = CRON)
public void notifyMail()
{
long l = System.currentTimeMillis();
String curStringDate = new SimpleDateFormat("HH:mm").format(l);
if(timeList != null) {
for (int i = 0; i < timeList.size(); i++) {
if (curStringDate.equals(timeList.get(i))) {
javaMailSender.send(mailMessage);
timeList.remove(i);
System.out.println("done");
}
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Помогите , немогу реализовать Json кодМне нужно взять данные но немогу понять как
Подскажите пожалуйста, как правильно будет реализоватьУ меня имеется окно закрытия приложения (при нажатии на кнопку назад из главного экрана...
Пытаюсь убрать пробелы из строки, но ничего не происходит
Пытаюсь подключиться к базе запущенной из XAMPP с другого компьютера по локалкеАдрес сервера 192