本当に良い話すapplicationevent春のイベント(RPM)

イベントリスナーは、ばね3.0.5でイベントに注釈とeventListnerを用いて達成された、反射モードオブザーバです。
私たちの春-Webflowの例として、ホテル予約、実装を見て、次の手順を実行します
。1.イベントを作成します。

コードをコピー
パブリッククラスBookingCreatedEventは延びApplicationEvent { プライベート静的最終長いのserialVersionUID = 3039313222160544111Lをプライベート予約予約。公共BookingCreatedEvent(オブジェクトソース){ スーパー(ソース)。} 公共BookingCreatedEvent(オブジェクトソース、予約予約){ スーパー(ソース)。this.booking = 予約。} 公共予約getBooking(){ 戻り予約。}}
コードをコピー

 

1
<code class = "hljs java" ><span class = "hljs-keyword" > </span></code>

イベントはApplicationEventを継承する必要があります。

2、リスナーを確立

コードをコピー
@Component
 パブリッククラスBookingEventsListenerが実装ApplicationListener <BookingCreatedEvent> { プライベート静的最終ロガーログ= Logger.getLogger()。// リスナー实现公共のボイドonApplicationEvent(BookingCreatedEventイベント){log.debug( "bookingId:" + 。event.getBooking()のgetId()); // 何かをします}}
コードをコピー

 

1
<code class = "hljs java" ><span class = "hljs-meta" ><span style= "background-color: #ff6600; color: #99cc00;" > </span></span></code>

リスナーはApplicationListenerを達成する必要があります。
BookingEventsListenerのみBookingCreatedEventイベントを聞くように、春3.0.5で、ジェネリック医薬品とApplicationListenerであることに注意してください。
さらなる成分は、いかなるばねが構成ファイルで指定されていないように、@Componentを登録するために使用することができます。

3、トリガイベント

コードをコピー
@Service( "bookingService" 
@Repository パブリッククラスJpaBookingServiceは実装BookingService、ApplicationContextAware { プライベートApplicationContextのコンテキストを、公共ボイドsetApplicationContext(ApplicationContextのApplicationContextの)はスローBeansException {log.debug( "AutowiredのApplicationContextを" )。this.context = のApplicationContext。} // 省略的代码@Transactional 公共ボイドpersistBooking(予約予約)スローHibernateExceptionで、のSQLException {em.persist(予約)。log.debug( "火BookingCreatedEvent" ); BookingCreatedEvent bookingCreatedEvent =


 新しいBookingCreatedEvent(これ、予約)。// 触发イベントこの.context.publishEvent(bookingCreatedEvent)。}}
コードをコピー

 

1
<code class = "hljs java" ><span class = "hljs-meta" > </span></code>

ApplicationContextAwareを達成するためのトリガは、ApplicationContextの導入のために、原因bookingServiceも組み立て春、システムが起動するときに、ApplicationContextのは、注入されました。また、以下のようにApplicationContextの中に直接注入してもよいです。

@Autowired
 民間のApplicationContextのApplicationContext。

 

1
<code class = "hljs css" > </code>

 

したがって、このモデルイベントリスナーのメリットは何ですか、それは?たとえば、ゲストがゲストに電子メールを送信するシステムの後にホテルをご予約の場合、我々はのは、何かを聴取者に電子メールを送信するためにコードを追加することができます。
私たちは春になった@Componentリスナーの登録コンポーネントと話すの上、使用しています。このリスナーは、ランタイム時に切り離されています。
私たちは道を例プロファイルを登録し、リスナーた場合や、主な目的は、展開中に切り離されます。
実用的なアプリケーションでは、両方。

サービスとリスナーが同期している、ということにも注意することがあり、persistBookingは、登録された@Transactionalの場合にはサービスであり、リスナーをpersistBookingで何かしてサービスを行うのと同じtansactionです。
あなたは、非同期実行する場合は、MQまたはデータベースを通る通過の必要性。

イベントリスナーは、ばね3.0.5でイベントに注釈とeventListnerを用いて達成された、反射モードオブザーバです。
私たちの春-Webflowの例として、ホテル予約、実装を見て、次の手順を実行します
。1.イベントを作成します。

コードをコピー
パブリッククラスBookingCreatedEventは延びApplicationEvent { プライベート静的最終長いのserialVersionUID = 3039313222160544111Lをプライベート予約予約。公共BookingCreatedEvent(オブジェクトソース){ スーパー(ソース)。} 公共BookingCreatedEvent(オブジェクトソース、予約予約){ スーパー(ソース)。this.booking = 予約。} 公共予約getBooking(){ 戻り予約。}}
コードをコピー

 

1
<code class = "hljs java" ><span class = "hljs-keyword" > </span></code>

イベントはApplicationEventを継承する必要があります。

2、リスナーを確立

コードをコピー
@Component
 パブリッククラスBookingEventsListenerが実装ApplicationListener <BookingCreatedEvent> { プライベート静的最終ロガーログ= Logger.getLogger()。// リスナー实现公共のボイドonApplicationEvent(BookingCreatedEventイベント){log.debug( "bookingId:" + 。event.getBooking()のgetId()); // 何かをします}}
コードをコピー

 

1
<code class = "hljs java" ><span class = "hljs-meta" ><span style= "background-color: #ff6600; color: #99cc00;" > </span></span></code>

リスナーはApplicationListenerを達成する必要があります。
BookingEventsListenerのみBookingCreatedEventイベントを聞くように、春3.0.5で、ジェネリック医薬品とApplicationListenerであることに注意してください。
さらなる成分は、いかなるばねが構成ファイルで指定されていないように、@Componentを登録するために使用することができます。

3、トリガイベント

コードをコピー
@Service( "bookingService" 
@Repository パブリッククラスJpaBookingServiceは実装BookingService、ApplicationContextAware { プライベートApplicationContextのコンテキストを、公共ボイドsetApplicationContext(ApplicationContextのApplicationContextの)はスローBeansException {log.debug( "AutowiredのApplicationContextを" )。this.context = のApplicationContext。} // 省略的代码@Transactional 公共ボイドpersistBooking(予約予約)スローHibernateExceptionで、のSQLException {em.persist(予約)。log.debug( "火BookingCreatedEvent" ); BookingCreatedEvent bookingCreatedEvent =


 新しいBookingCreatedEvent(これ、予約)。// 触发イベントこの.context.publishEvent(bookingCreatedEvent)。}}
コードをコピー

 

1
<code class = "hljs java" ><span class = "hljs-meta" > </span></code>

ApplicationContextAwareを達成するためのトリガは、ApplicationContextの導入のために、原因bookingServiceも組み立て春、システムが起動するときに、ApplicationContextのは、注入されました。また、以下のようにApplicationContextの中に直接注入してもよいです。

@Autowired
 民間のApplicationContextのApplicationContext。

 

1
<code class = "hljs css" > </code>

 

したがって、このモデルイベントリスナーのメリットは何ですか、それは?たとえば、ゲストがゲストに電子メールを送信するシステムの後にホテルをご予約の場合、我々はのは、何かを聴取者に電子メールを送信するためにコードを追加することができます。
私たちは春になった@Componentリスナーの登録コンポーネントと話すの上、使用しています。このリスナーは、ランタイム時に切り離されています。
私たちは道を例プロファイルを登録し、リスナーた場合や、主な目的は、展開中に切り離されます。
実用的なアプリケーションでは、両方。

サービスとリスナーが同期している、ということにも注意することがあり、persistBookingは、登録された@Transactionalの場合にはサービスであり、リスナーをpersistBookingで何かしてサービスを行うのと同じtansactionです。
あなたは、非同期実行する場合は、MQまたはデータベースを通る通過の必要性。

おすすめ

転載: www.cnblogs.com/leeego-123/p/11365597.html