Как вернуть результат из spirngEventListener

spring spring-boot

318 просмотра

1 ответ

63 Репутация автора

Я пытался использовать весенний eventLisnter в весенней загрузке 1.3.5.

Мне было интересно, есть ли стандартный способ вернуть сохраненный объект обратно или вернуть больше информации после обработки события.

Я могу использовать событие в качестве контейнера для возврата моего сохраненного объекта, но я не уверен, что это лучшая практика, любой совет будет оценен :)

Вот пример:

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
    }   
}
Автор: Neal.Shan Источник Размещён: 18.07.2016 08:43

Ответы (1)


0 плюса

63 Репутация автора

Решение

Как обсуждено с OrangeDog на комментариях. Хорошо использовать сервис, а затем публиковать события.
или могли бы использовать сервис и использовать ServiceLocatorFactoryBean для получения пользовательского сервиса.

Автор: Neal.Shan Размещён: 29.07.2016 04:46
Вопросы из категории :
32x32