- no need for DUMMY table - max-rows-per-poll is deprecated - set reply-timeout to 0 (for no person result)
79 lines
3.3 KiB
XML
79 lines
3.3 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xmlns:int="http://www.springframework.org/schema/integration"
|
|
xmlns:int-jdbc="http://www.springframework.org/schema/integration/jdbc"
|
|
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
|
|
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
|
|
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
|
|
http://www.springframework.org/schema/integration/jdbc http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd
|
|
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
|
|
|
|
<jdbc:embedded-database id="datasource" type="H2">
|
|
<jdbc:script location="classpath:setup-tables.sql"/>
|
|
</jdbc:embedded-database>
|
|
|
|
<!-- See also:
|
|
http://static.springsource.org/spring-integration/reference/htmlsingle/#gateway-proxy
|
|
http://www.eaipatterns.com/MessagingGateway.html -->
|
|
|
|
<int:channel id="createPersonRequestChannel"/>
|
|
<int:channel id="createPersonReplyChannel"/>
|
|
<int:channel id="findPersonRequestChannel"/>
|
|
<int:channel id="findPersonReplyChannel"/>
|
|
|
|
<int:gateway id="personService" service-interface="org.springframework.integration.samples.jdbc.service.PersonService">
|
|
<int:method name="createPerson"
|
|
request-channel="createPersonRequestChannel"
|
|
request-timeout="5000"
|
|
reply-channel="createPersonReplyChannel"
|
|
reply-timeout="0"/>
|
|
<int:method name="findPersonByName"
|
|
request-channel="findPersonRequestChannel"
|
|
request-timeout="5000"
|
|
reply-channel="findPersonReplyChannel"
|
|
reply-timeout="0"/>
|
|
</int:gateway>
|
|
|
|
<int-jdbc:outbound-gateway data-source="datasource"
|
|
requires-reply="false"
|
|
request-channel="findPersonRequestChannel"
|
|
query="select * from Person where lower(name)=lower(:payload)"
|
|
reply-channel="findPersonReplyChannel" row-mapper="personResultMapper"
|
|
max-rows="100">
|
|
</int-jdbc:outbound-gateway>
|
|
|
|
<bean id="personResultMapper" class="org.springframework.integration.samples.jdbc.domain.PersonMapper"/>
|
|
|
|
<int-jdbc:outbound-gateway data-source="datasource"
|
|
request-channel="createPersonRequestChannel"
|
|
reply-channel="createPersonReplyChannel"
|
|
update="insert into Person (name,gender,dateOfBirth)
|
|
values
|
|
(:name,:gender,:dateOfBirth)"
|
|
query="select * from Person where id = :id"
|
|
request-sql-parameter-source-factory="requestSource"
|
|
reply-sql-parameter-source-factory="replySource"
|
|
row-mapper="personResultMapper"
|
|
keys-generated="true"/>
|
|
|
|
<bean id="replySource" class="org.springframework.integration.jdbc.ExpressionEvaluatingSqlParameterSourceFactory">
|
|
<property name="parameterExpressions">
|
|
<map>
|
|
<entry key="id" value="#this['SCOPE_IDENTITY()']"/>
|
|
</map>
|
|
</property>
|
|
</bean>
|
|
|
|
<bean id="requestSource" class="org.springframework.integration.jdbc.ExpressionEvaluatingSqlParameterSourceFactory">
|
|
<property name="parameterExpressions">
|
|
<map>
|
|
<entry key="name" value="payload.name.toUpperCase()"/>
|
|
<entry key="gender" value="payload.gender.identifier"/>
|
|
<entry key="dateOfBirth" value="payload.dateOfBirth"/>
|
|
</map>
|
|
</property>
|
|
</bean>
|
|
|
|
</beans>
|