Class R2dbcMessageSource
java.lang.Object
org.springframework.integration.util.AbstractExpressionEvaluator
org.springframework.integration.endpoint.AbstractMessageSource<org.reactivestreams.Publisher<?>>
org.springframework.integration.r2dbc.inbound.R2dbcMessageSource
- All Implemented Interfaces:
Aware,BeanFactoryAware,BeanNameAware,DisposableBean,InitializingBean,MessageSource<org.reactivestreams.Publisher<?>>,IntegrationPattern,NamedComponent,IntegrationInboundManagement,IntegrationManagement
An instance of
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.
- Since:
- 5.4
- Author:
- Rohan Mukesh, Artem Bilan
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassAn instance of this class is used as a root object for query expression to give a limited access only to theStatementMapper.createSelect(java.lang.String)fluent API.Nested classes/interfaces inherited from interface org.springframework.integration.support.management.IntegrationManagement
IntegrationManagement.ManagementOverrides -
Field Summary
Fields inherited from class org.springframework.integration.util.AbstractExpressionEvaluator
EXPRESSION_PARSER, loggerFields inherited from interface org.springframework.integration.support.management.IntegrationManagement
METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME -
Constructor Summary
ConstructorsConstructorDescriptionR2dbcMessageSource(org.springframework.data.r2dbc.core.R2dbcEntityOperations r2dbcEntityOperations, String query) Create an instance with the providedR2dbcEntityOperationsand SpEL expression which should resolve to a Relational 'query' string.R2dbcMessageSource(org.springframework.data.r2dbc.core.R2dbcEntityOperations r2dbcEntityOperations, Expression queryExpression) Create an instance with the providedR2dbcEntityOperationsand SpEL expression which should resolve to a query string orStatementMapper.SelectSpecinstance. -
Method Summary
Modifier and TypeMethodDescriptionprotected ObjectExecute a query returning its results as the Message payload.protected voidonInit()voidsetBindFunction(BiFunction<DatabaseClient.GenericExecuteSpec, ?, DatabaseClient.GenericExecuteSpec> bindFunction) Set aBiFunctionwhich is used to bind parameters into the update query.voidsetExpectSingleResult(boolean expectSingleResult) The flag to manage which find* method to invoke onR2dbcEntityOperations.voidsetPayloadType(Class<?> payloadType) Set the type of the entityClass which is used for theEntityRowMapper.voidsetUpdateSql(String updateSql) Set an update query that will be passed to theDatabaseClient.sql(String)method.Methods inherited from class org.springframework.integration.endpoint.AbstractMessageSource
buildMessage, destroy, getBeanName, getComponentName, getManagedName, getManagedType, getOverrides, isLoggingEnabled, receive, registerMetricsCaptor, setBeanName, setHeaderExpressions, setLoggingEnabled, setManagedName, setManagedTypeMethods inherited from class org.springframework.integration.util.AbstractExpressionEvaluator
afterPropertiesSet, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, getBeanFactory, getEvaluationContext, getEvaluationContext, getMessageBuilderFactory, setBeanFactory, setConversionServiceMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.integration.support.management.IntegrationManagement
getThisAs, isObserved, registerObservationRegistryMethods inherited from interface org.springframework.integration.core.MessageSource
getIntegrationPatternType
-
Constructor Details
-
R2dbcMessageSource
public R2dbcMessageSource(org.springframework.data.r2dbc.core.R2dbcEntityOperations r2dbcEntityOperations, String query) Create an instance with the providedR2dbcEntityOperationsand SpEL expression which should resolve to a Relational 'query' string. It assumes that theR2dbcEntityOperationsis fully initialized and ready to be used. The 'query' will be evaluated on every call to theAbstractMessageSource.receive()method.- Parameters:
r2dbcEntityOperations- The reactive database client for performing database calls.query- The query String.
-
R2dbcMessageSource
public R2dbcMessageSource(org.springframework.data.r2dbc.core.R2dbcEntityOperations r2dbcEntityOperations, Expression queryExpression) Create an instance with the providedR2dbcEntityOperationsand SpEL expression which should resolve to a query string orStatementMapper.SelectSpecinstance. It assumes that theR2dbcEntityOperationsis fully initialized and ready to be used. The 'queryExpression' will be evaluated on every call to theAbstractMessageSource.receive()method.- Parameters:
r2dbcEntityOperations- The reactive for performing database calls.queryExpression- The query expression. The root object for evaluation context is aR2dbcMessageSource.SelectCreatorfor delegation int theStatementMapper.createSelect(java.lang.String)fluent API.
-
-
Method Details
-
setPayloadType
Set the type of the entityClass which is used for theEntityRowMapper.- Parameters:
payloadType- The class to use.
-
setUpdateSql
Set an update query that will be passed to theDatabaseClient.sql(String)method.- Parameters:
updateSql- the update query string.
-
setBindFunction
public void setBindFunction(BiFunction<DatabaseClient.GenericExecuteSpec, ?, DatabaseClient.GenericExecuteSpec> bindFunction) Set aBiFunctionwhich is used to bind parameters into the update query.- Parameters:
bindFunction- theBiFunctionto use.
-
setExpectSingleResult
public void setExpectSingleResult(boolean expectSingleResult) The flag to manage which find* method to invoke onR2dbcEntityOperations. Default is 'false', which means theAbstractMessageSource.receive()method will use theDatabaseClient.sql(String)method and will fetch all. If set to 'true'AbstractMessageSource.receive()will useDatabaseClient.sql(String)and will fetch one and the payload of the returnedMessagewill be the returned target Object of type identified bypayloadTypeinstead of a List.- Parameters:
expectSingleResult- true if a single result is expected.
-
getComponentType
-
onInit
protected void onInit()- Overrides:
onInitin classAbstractExpressionEvaluator
-
doReceive
Execute a query returning its results as the Message payload. The payload can be eitherFluxorMonoof objects of type identified bypayloadType, or a single element of type identified bypayloadTypebased on the value ofexpectSingleResultattribute which defaults to 'false' resultingMessagewith payload of typeFlux.- Specified by:
doReceivein classAbstractMessageSource<org.reactivestreams.Publisher<?>>- Returns:
- The value returned.
-