From 8a2382f7275e10ec27fb3f298d73c1eef5668c4c Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Thu, 24 Jan 2019 15:29:26 +0100 Subject: [PATCH] DATAJDBC-282 - Add JdbcAggregateOperations as a bean to the JdbcConfiguration. --- .../repository/config/JdbcConfiguration.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/JdbcConfiguration.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/JdbcConfiguration.java index d0619c0b6..e1f349e85 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/JdbcConfiguration.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/JdbcConfiguration.java @@ -17,15 +17,22 @@ package org.springframework.data.jdbc.repository.config; import java.util.Optional; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.converter.Converter; +import org.springframework.data.jdbc.core.DataAccessStrategy; +import org.springframework.data.jdbc.core.DefaultDataAccessStrategy; +import org.springframework.data.jdbc.core.JdbcAggregateOperations; +import org.springframework.data.jdbc.core.JdbcAggregateTemplate; +import org.springframework.data.jdbc.core.SqlGeneratorSource; import org.springframework.data.jdbc.core.convert.BasicJdbcConverter; import org.springframework.data.jdbc.core.convert.JdbcCustomConversions; import org.springframework.data.jdbc.core.mapping.JdbcMappingContext; import org.springframework.data.relational.core.conversion.RelationalConverter; import org.springframework.data.relational.core.mapping.NamingStrategy; import org.springframework.data.relational.core.mapping.RelationalMappingContext; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations; /** * Beans that must be registered for Spring Data JDBC to work. @@ -78,4 +85,22 @@ public class JdbcConfiguration { public JdbcCustomConversions jdbcCustomConversions() { return new JdbcCustomConversions(); } + + /** + * Register a {@link JdbcAggregateTemplate} as a bean for easy use in applications that need a lower level of + * abstraction than the normal repository abstraction. + * + * @param publisher + * @param context + * @param converter + * @param operations + * @return + */ + @Bean + public JdbcAggregateOperations jdbcAggregateOperations(ApplicationEventPublisher publisher, + RelationalMappingContext context, RelationalConverter converter, NamedParameterJdbcOperations operations) { + DataAccessStrategy dataAccessStrategy = new DefaultDataAccessStrategy(new SqlGeneratorSource(context), context, + converter, operations); + return new JdbcAggregateTemplate(publisher, context, converter, dataAccessStrategy); + } }