diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfiguration.java index 11e9e827abc..585efa56825 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfiguration.java @@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory; import org.neo4j.ogm.session.SessionFactory; import org.neo4j.ogm.session.event.EventListener; +import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfigurationPackages; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -34,7 +35,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplicat import org.springframework.boot.autoconfigure.domain.EntityScanPackages; import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -66,39 +66,33 @@ public class Neo4jDataAutoConfiguration { @ConditionalOnMissingBean(PlatformTransactionManager.class) public Neo4jTransactionManager transactionManager(SessionFactory sessionFactory, ObjectProvider transactionManagerCustomizers) { - return customize(new Neo4jTransactionManager(sessionFactory), transactionManagerCustomizers.getIfAvailable()); - } - - private Neo4jTransactionManager customize(Neo4jTransactionManager transactionManager, - TransactionManagerCustomizers customizers) { - if (customizers != null) { - customizers.customize(transactionManager); - } + Neo4jTransactionManager transactionManager = new Neo4jTransactionManager(sessionFactory); + transactionManagerCustomizers.ifAvailable((customizers) -> customizers.customize(transactionManager)); return transactionManager; } @Configuration(proxyBeanMethods = false) @ConditionalOnMissingBean(SessionFactory.class) - protected static class Neo4jOgmSessionFactoryConfiguration { + static class Neo4jOgmSessionFactoryConfiguration { @Bean @ConditionalOnMissingBean - public org.neo4j.ogm.config.Configuration configuration(Neo4jProperties properties) { + org.neo4j.ogm.config.Configuration configuration(Neo4jProperties properties) { return properties.createConfiguration(); } @Bean - public SessionFactory sessionFactory(org.neo4j.ogm.config.Configuration configuration, - ApplicationContext applicationContext, ObjectProvider eventListeners) { - SessionFactory sessionFactory = new SessionFactory(configuration, getPackagesToScan(applicationContext)); - eventListeners.stream().forEach(sessionFactory::register); + SessionFactory sessionFactory(org.neo4j.ogm.config.Configuration configuration, BeanFactory beanFactory, + ObjectProvider eventListeners) { + SessionFactory sessionFactory = new SessionFactory(configuration, getPackagesToScan(beanFactory)); + eventListeners.orderedStream().forEach(sessionFactory::register); return sessionFactory; } - private String[] getPackagesToScan(ApplicationContext applicationContext) { - List packages = EntityScanPackages.get(applicationContext).getPackageNames(); - if (packages.isEmpty() && AutoConfigurationPackages.has(applicationContext)) { - packages = AutoConfigurationPackages.get(applicationContext); + private String[] getPackagesToScan(BeanFactory beanFactory) { + List packages = EntityScanPackages.get(beanFactory).getPackageNames(); + if (packages.isEmpty() && AutoConfigurationPackages.has(beanFactory)) { + packages = AutoConfigurationPackages.get(beanFactory); } return StringUtils.toStringArray(packages); } @@ -111,19 +105,13 @@ public class Neo4jDataAutoConfiguration { @ConditionalOnMissingBean(OpenSessionInViewInterceptor.class) @ConditionalOnProperty(prefix = "spring.data.neo4j", name = "open-in-view", havingValue = "true", matchIfMissing = true) - protected static class Neo4jWebConfiguration { + static class Neo4jWebConfiguration { private static final Log logger = LogFactory.getLog(Neo4jWebConfiguration.class); - private final Neo4jProperties neo4jProperties; - - protected Neo4jWebConfiguration(Neo4jProperties neo4jProperties) { - this.neo4jProperties = neo4jProperties; - } - @Bean - public OpenSessionInViewInterceptor neo4jOpenSessionInViewInterceptor() { - if (this.neo4jProperties.getOpenInView() == null) { + OpenSessionInViewInterceptor neo4jOpenSessionInViewInterceptor(Neo4jProperties properties) { + if (properties.getOpenInView() == null) { logger.warn("spring.data.neo4j.open-in-view is enabled by default." + "Therefore, database queries may be performed during view " + "rendering. Explicitly configure " @@ -133,7 +121,7 @@ public class Neo4jDataAutoConfiguration { } @Bean - public WebMvcConfigurer neo4jOpenSessionInViewInterceptorConfigurer(OpenSessionInViewInterceptor interceptor) { + WebMvcConfigurer neo4jOpenSessionInViewInterceptorConfigurer(OpenSessionInViewInterceptor interceptor) { return new WebMvcConfigurer() { @Override