Integración de Spring: externalización de consultas JDBC

¿Hay una manera simple de externalizar grandes consultas sql desde puertas de enlace de salida jdbc, en lugar de incluirlo en línea? La razón es que tenemos que hacer muchas consultas grandes y nos gustaría tenerlas en sus propios archivos, o al menos externalizarlas en beans.

Algunas advertencias:

No tengo control sobre la base de datos, por lo que no puedo crear nada allí (por ejemplo, procedimientos almacenados)No quiero crear clases solo para este asunto, solo quiero organizarlo / refactorizarlo un poco, y no hacerlo más complejo introduciendo muchos otros pasosPreferiría crear archivos .sql desnudos, pero poner las consultas en un xml con un bean también está bienNo tengo la opción de usar hibernate, pegado a la integración de primavera jdbc

Sugerencias sobre cómo organizar mejor esto, teniendo en cuenta que vamos a tener muchas otras puertas de enlace salientes son bienvenidas :)

Por ejemplo, no me gustaría tener el SQL en línea en el elemento "int-jdbc: outbound-gateway" de la siguiente manera:

<int-jdbc:outbound-gateway
         data-source="datasource"
         request-channel="reqChannel"
         reply-channel="respChannel"
         row-mapper="datamapper" max-rows-per-poll="1000"
         query=" SELECT Field1, Field2, ManyOthers
                 FROM Table T
                 JOIN A ON A.id = T.id [... many other joins here ...]
                 WHERE SOMECONDITION=:payload">
</int-jdbc:outbound-gateway>


Lo que he hecho usando las respuestas

Simplemente:

<bean id="myCoolQuery" class="java.lang.String">
    <constructor-arg>
      <value>
        <![CDATA[
                 SELECT Field1, Field2, ManyOthers
                 FROM Table T
                 JOIN A ON A.id = T.id [... many other joins here ...]
                 WHERE SOMECONDITION=:payload
        ]]>
      </value>
    </constructor-arg>
</bean> 

<int-jdbc:outbound-gateway
         data-source="datasource"
         request-channel="reqChannel"
         reply-channel="respChannel"
         row-mapper="datamapper" max-rows-per-poll="1000"
         query="#{myCoolQuery}">
</int-jdbc:outbound-gateway>

También funciona con el parámetro ": payload" utilizado dentro del bean.

Respuestas a la pregunta(2)

Su respuesta a la pregunta