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.ManagementOverrides
EXPRESSION_PARSER, logger
METER_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, setManagedType
afterPropertiesSet, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, getBeanFactory, getEvaluationContext, getEvaluationContext, getMessageBuilderFactory, setBeanFactory, setConversionService
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getIntegrationPatternType
getThisAs
public 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 AbstractExpressionEvaluator
protected 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<?>>