Я пытался использовать весенний eventLisnter в spring-boot 1.3.5.RELEASE.Как вернуть результат от spirngEventListener
Мне было интересно, существует ли стандартный способ возврата сохраненного объекта или возврата дополнительной информации после обработки события.
я могу использовать это событие как контейнер, чтобы установить мой сохраненный объект назад, но я не уверен, что это лучшая практика, любые советы будут оценены :)
Вот пример:
public class StoreOrderEvent extends ApplicationEvent {
private OrderBean orderBean;
/**
* Create a new ApplicationEvent.
*
* @param source the object on which the event initially occurred (never {@code null})
*/
public StoreOrderEvent (Object source, OrderBean orderBean) {
super(source);
this.orderBean = orderBean;
}
public OrderBean getOrderBean() {
return this.orderBean;
}
}
@Component
public class OrderEventListener{
@Autowired
private OrderRepository orderRepository;
@Order(5000)
@TransactionalEventListener
public void processStoreOrderEvent(StoreOrderEvent event) {
OrderBean orderbean = orderRepository.save(event.getOrderBean());
// return orderBean
}
}
@Service
public class OrderService{
@Autowired
private ApplicationContext applicationContext;
public OrderBean storeOrder(OrderVO vo) {
vo -> orderBean;
applicationContext.publishEvent(new StoreOrderEvent(this, orderBean));
// get my saved orderBean
}
}
Нет, это плохой способ делать вещи. Чего вы на самом деле пытаетесь достичь? – OrangeDog
@OrangeDog Я пытаюсь получить свой сохраненный идентификатор orderBean в Service и сохранить его в других beans/tables. –
Нет, что вы * на самом деле * пытаетесь достичь. – OrangeDog