如何从spirngEventListener返回结果

时间:2016-07-18 08:43:06

标签: spring spring-boot

我试图在spring-boot 1.3.5.RELEASE中使用spring的eventLisnter。

我想知道是否有一种标准方法可以返回保存的对象,或者在处理完事件后返回更多信息。

我可以使用event作为容器来设置我保存的对象,但我不确定这是否是最好的做法,任何建议都将受到赞赏:)

以下是示例:

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
    }   
}

1 个答案:

答案 0 :(得分:0)

正如OrangeDog在评论中所讨论的那样。使用服务然后发布活动很好 或者可以使用服务并使用ServiceLocatorFactoryBean来获取自定义服务。