public class R2dbcMessageSource extends AbstractMessageSource<org.reactivestreams.Publisher<?>>
MessageSource which returns
a Message with a payload which is the result of
execution of query. When expectSingleResult is false (default), the R2DBC
query is executed returning a Flux.
The returned Flux will be used as the payload of the
Message returned by the AbstractMessageSource.receive()
method.
When expectSingleResult is true, the query is executed returning a Mono
for the single object returned from the query.
IntegrationManagement.ManagementOverridesEXPRESSION_PARSER, loggerMETER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME| Constructor and Description |
|---|
R2dbcMessageSource(org.springframework.data.r2dbc.core.R2dbcEntityOperations r2dbcEntityOperations,
Expression queryExpression)
Create an instance with the provided
R2dbcEntityOperations and SpEL expression
which should resolve to a Relational 'query' string. |
R2dbcMessageSource(org.springframework.data.r2dbc.core.R2dbcEntityOperations r2dbcEntityOperations,
String query)
Create an instance with the provided
R2dbcEntityOperations and SpEL expression
which should resolve to a Relational 'query' string. |
| Modifier and Type | Method and Description |
|---|---|
protected Object |
doReceive()
Execute a query returning its results as the Message payload.
|
String |
getComponentType() |
protected void |
onInit() |
void |
setBindFunction(java.util.function.BiFunction<org.springframework.r2dbc.core.DatabaseClient.GenericExecuteSpec,?,org.springframework.r2dbc.core.DatabaseClient.GenericExecuteSpec> bindFunction)
Provide a way to set BindFunction which will be used to bind parameters
in the update query.
|
void |
setExpectSingleResult(boolean expectSingleResult)
Provide a way to manage which find* method to invoke on
R2dbcEntityOperations. |
void |
setPayloadType(Class<?> payloadType)
Provide a way to set the type of the entityClass that will be passed to the
DatabaseClient.execute(String)
method. |
void |
setUpdateSql(String updateSql)
Provide a way to set update query that will be passed to the
DatabaseClient.execute(String)
method. |
buildMessage, destroy, getBeanName, getComponentName, getManagedName, getManagedType, getOverrides, isLoggingEnabled, receive, registerMetricsCaptor, setBeanName, setHeaderExpressions, setLoggingEnabled, setManagedName, setManagedTypeafterPropertiesSet, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, getBeanFactory, getEvaluationContext, getEvaluationContext, getMessageBuilderFactory, setBeanFactory, setConversionServiceclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetIntegrationPatternTypegetThisAspublic R2dbcMessageSource(org.springframework.data.r2dbc.core.R2dbcEntityOperations r2dbcEntityOperations,
String query)
R2dbcEntityOperations and SpEL expression
which should resolve to a Relational 'query' string.
It assumes that the R2dbcEntityOperations is fully initialized and ready to be used.
The 'query' will be evaluated on every call to the AbstractMessageSource.receive() method.r2dbcEntityOperations - The reactive database client for performing database calls.query - The query String.public R2dbcMessageSource(org.springframework.data.r2dbc.core.R2dbcEntityOperations r2dbcEntityOperations,
Expression queryExpression)
R2dbcEntityOperations and SpEL expression
which should resolve to a Relational 'query' string.
It assumes that the R2dbcEntityOperations is fully initialized and ready to be used.
The 'queryExpression' will be evaluated on every call to the AbstractMessageSource.receive() method.r2dbcEntityOperations - The reactive for performing database calls.queryExpression - The query expression.public void setPayloadType(Class<?> payloadType)
DatabaseClient.execute(String)
method.payloadType - The t class.public void setUpdateSql(String updateSql)
DatabaseClient.execute(String)
method.updateSql - Update query string.public void setBindFunction(java.util.function.BiFunction<org.springframework.r2dbc.core.DatabaseClient.GenericExecuteSpec,?,org.springframework.r2dbc.core.DatabaseClient.GenericExecuteSpec> bindFunction)
bindFunction - The bindFunction.public void setExpectSingleResult(boolean expectSingleResult)
R2dbcEntityOperations.
Default is 'false', which means the AbstractMessageSource.receive() method will use
the DatabaseClient.sql(String) method and will fetch all. If set
to 'true'AbstractMessageSource.receive() will use DatabaseClient.sql(String)
and will fetch one and the payload of the returned Message
will be the returned target Object of type
identified by payloadType instead of a List.expectSingleResult - true if a single result is expected.public String getComponentType()
protected void onInit()
onInit in class AbstractExpressionEvaluatorprotected Object doReceive()
Flux or
Mono of objects of type identified by payloadType,
or a single element of type identified by payloadType
based on the value of expectSingleResult attribute which defaults to 'false' resulting
Message with payload of type
Flux. The collection name used in thedoReceive in class AbstractMessageSource<org.reactivestreams.Publisher<?>>