2016-07-18 3 views
0

私はspring-boot 1.3.5.RELEASEでspringのeventLisnterを使用しようとしていました。私は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 
    } 
} 
+0

いいえ、これはやり方が悪い方法です。実際に何を達成しようとしていますか? – OrangeDog

+0

@OrangeDog私は、保存されたオーダービーンのIDをServiceで取得し、他のBean /テーブルに保存しようとしています。 –

+0

いいえ、あなたは*実際に*達成しようとしていますか? – OrangeDog

答えて

0

コメントについてOrangeDogと議論しました。サービスを使い、イベントを投稿するのは良いことです。
サービスを使用し、ServiceLocatorFactoryBeanを使用してカスタムサービスを取得する可能性があります。

関連する問題