我试图在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
}
}
答案 0 :(得分:0)
正如OrangeDog在评论中所讨论的那样。使用服务然后发布活动很好 或者可以使用服务并使用ServiceLocatorFactoryBean来获取自定义服务。