2016-03-24 9 views
1

私は春の統合JavaのDSLにはJPAハイレベルのサポートはまだありません参照
Example Spring integration DSL for JPA Inbound Channel adapterJPAアウトバウンドチャネルアダプタの設定DSL

しかし、低レベルでのJPAのアウトバウンド・チャネル・アダプターを構成することが可能ですか?

など。 XMLでこのようなJava DSLコンフィグレーションを作成するには

<int-jpa:outbound-channel-adapter id="moduleMessagePersister" channel="inputPersisterChannel" persist-mode="MERGE" entity-manager-factory="entityManagerFactory"> 
    <int-jpa:transactional transaction-manager="transactionManager"/> 
</int-jpa:outbound-channel-adapter> 

答えて

2

私は約束したように覚えています:-)。

Re。 <int-jpa:outbound-channel-adapter>

  1. 任意のこのようなXML要素は、特定MessageHandler消費者エンドポイントです。

  2. Java &注釈の設定に使用するものをユーザーが判断するのに役立つ、コアプロジェクトの最新の変更を参照してください。したがって、JavaのDSLのためにも:https://jira.spring.io/browse/INT-3964

だから、私たちは、この特定の要素のために:

<xsd:documentation> 
    Configures a Consumer Endpoint for the 
    'org.springframework.integration.jpa.outbound.JpaOutboundGatewayFactoryBean' (one-way) 
    updating a database using the Java Persistence API (JPA). 
</xsd:documentation> 

そこで我々は

@Bean 
public FactoryBean<MessageHandler> jpaMessageHandler() { 
    JpaOutboundGatewayFactoryBean factoryBean = new JpaOutboundGatewayFactoryBean(); 
    ... 
    factoryBean.setProducesReply(false); 
    return factoryBean; 
} 

のようなものを設定し、それをから使用する必要がありますDSL:

@Bean 
public IntegrationFlow jpaFlow(MessageHandler jpaMessageHandler) { 
     ... 
     .handle(jpaMessageHandler) 
     .get(); 
} 

他に何を書かなければならないか教えてください!

はい:私たちは間違いなく次の1.2 Java DSLバージョンでJPAアダプタを利用する必要があります。

+0

ありがとう、Artem! 'transactionManager'と入力チャネル名を注入する場所はどこですか? –

+0

'JpaOutboundGatewayFactoryBean'に' txAdviceChain'オプションがあります。ここで 'TransactionInterceptor'を注入する必要があります。手掛かりを設定する方法については 'PollerSpec.transactional()'を参照してください。 'inputChannel'は' IntegrationFlow'定義から来ます。 '.handle()'はその 'jpaMessageHandler'の' ConsumerEndpointFactoryBean'を気にします。ええ、私はそれが十分に複雑だと思う。 JPLが普及している場合は、DSL用のJPAを実装する必要があります。 'Splitters'、' Filters'などを追加しようとしていましたが、Springはまだコミュニティにとって難しいので、より高度な流暢なAPIを提供する必要があります。 –

+0

???ポイントは?議論してください! –

関連する問題