如何解决TaskScheduler和Spring侦听器
我尝试使用Spring TaskScheduler更改实体,但得到 RollbackException ,因为Spring审计员找不到currentAuditor。而且我什至不知道在哪里可以阅读到如何解决我的问题。如果有人可以帮助我解决问题,我将不胜感激?
由以下原因引起:java.lang.NullPointerException 在com.geleigeit.LinenAndFlowers.config.auditor.AuditorAwareImpl.getCurrentAuditor(AuditorAwareImpl.java:12)〜[classes / :?] 在org.springframework.data.auditing.AuditingHandler.lambda $ touchAuditor $ 6(AuditingHandler.java:193)〜[spring-data-commons-2.3.1.RELEASE.jar:2.3.1.RELEASE] 在java.util.Optional.map(Optional.java:258)〜[?:?]
@Override
@Transactional
@Scheduled(fixedDelay=10000)
public void toInProgress() {
String currentStatus = "QUEUE";
String statusToSet = "IN_PROGRESS";
OrderStatus currentOrderStatus = orderStatusRepository.findByStatus(currentStatus);
OrderStatus orderStatusToSet = orderStatusRepository.findByStatus(statusToSet);
try {
List<Order> orders = repository.findAllByOrderStatus(currentOrderStatus);
for(Order order : orders) {
int diff = (int) ((new Date().getTime() - order.getCreatedDate().getTime()) / (24 * 60 * 60 * 100));
if(diff >= 1) {
order.setorderStatus(orderStatusToSet);
repository.save(order);
logger.info("order status QUEUE was changed to IN_PROGRESS by order.{}",order.hashCode());
}
}
} catch (NullPointerException e) {
logger.info("no orders with status QUEUE");
}
}
解决方法
我解决了我的问题。我只是用这种方法验证用户(调度程序)。
Authentication auth = new UsernamePasswordAuthenticationToken(SecurityUser.fromUser(
userService.getUser(scheduleId)),Role.ADMIN);
SecurityContextHolder.getContext().setAuthentication(auth);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。