Skip to content

Commit 45915d0

Browse files
committed
Merge branch '2.1.x'
Closes gh-17767
2 parents 89aefa6 + eb26492 commit 45915d0

File tree

3 files changed

+40
-24
lines changed

3 files changed

+40
-24
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfiguration.java

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -53,32 +53,18 @@
5353
* @author Vince Bickers
5454
* @author Stephane Nicoll
5555
* @author Kazuki Shimizu
56+
* @author Michael Simons
5657
* @since 1.4.0
5758
*/
5859
@Configuration(proxyBeanMethods = false)
5960
@ConditionalOnClass({ SessionFactory.class, Neo4jTransactionManager.class, PlatformTransactionManager.class })
60-
@ConditionalOnMissingBean(SessionFactory.class)
6161
@EnableConfigurationProperties(Neo4jProperties.class)
6262
@Import(Neo4jBookmarkManagementConfiguration.class)
6363
public class Neo4jDataAutoConfiguration {
6464

65-
@Bean
66-
@ConditionalOnMissingBean
67-
public org.neo4j.ogm.config.Configuration configuration(Neo4jProperties properties) {
68-
return properties.createConfiguration();
69-
}
70-
71-
@Bean
72-
public SessionFactory sessionFactory(org.neo4j.ogm.config.Configuration configuration,
73-
ApplicationContext applicationContext, ObjectProvider<EventListener> eventListeners) {
74-
SessionFactory sessionFactory = new SessionFactory(configuration, getPackagesToScan(applicationContext));
75-
eventListeners.stream().forEach(sessionFactory::register);
76-
return sessionFactory;
77-
}
78-
7965
@Bean
8066
@ConditionalOnMissingBean(PlatformTransactionManager.class)
81-
public Neo4jTransactionManager transactionManager(SessionFactory sessionFactory, Neo4jProperties properties,
67+
public Neo4jTransactionManager transactionManager(SessionFactory sessionFactory,
8268
ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers) {
8369
return customize(new Neo4jTransactionManager(sessionFactory), transactionManagerCustomizers.getIfAvailable());
8470
}
@@ -91,12 +77,32 @@ private Neo4jTransactionManager customize(Neo4jTransactionManager transactionMan
9177
return transactionManager;
9278
}
9379

94-
private String[] getPackagesToScan(ApplicationContext applicationContext) {
95-
List<String> packages = EntityScanPackages.get(applicationContext).getPackageNames();
96-
if (packages.isEmpty() && AutoConfigurationPackages.has(applicationContext)) {
97-
packages = AutoConfigurationPackages.get(applicationContext);
80+
@Configuration(proxyBeanMethods = false)
81+
@ConditionalOnMissingBean(SessionFactory.class)
82+
protected static class Neo4jOgmSessionFactoryConfiguration {
83+
84+
@Bean
85+
@ConditionalOnMissingBean
86+
public org.neo4j.ogm.config.Configuration configuration(Neo4jProperties properties) {
87+
return properties.createConfiguration();
88+
}
89+
90+
@Bean
91+
public SessionFactory sessionFactory(org.neo4j.ogm.config.Configuration configuration,
92+
ApplicationContext applicationContext, ObjectProvider<EventListener> eventListeners) {
93+
SessionFactory sessionFactory = new SessionFactory(configuration, getPackagesToScan(applicationContext));
94+
eventListeners.stream().forEach(sessionFactory::register);
95+
return sessionFactory;
9896
}
99-
return StringUtils.toStringArray(packages);
97+
98+
private String[] getPackagesToScan(ApplicationContext applicationContext) {
99+
List<String> packages = EntityScanPackages.get(applicationContext).getPackageNames();
100+
if (packages.isEmpty() && AutoConfigurationPackages.has(applicationContext)) {
101+
packages = AutoConfigurationPackages.get(applicationContext);
102+
}
103+
return StringUtils.toStringArray(packages);
104+
}
105+
100106
}
101107

102108
@Configuration(proxyBeanMethods = false)

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfigurationTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,16 @@ void customSessionFactory() {
9999
});
100100
}
101101

102+
@Test
103+
void customSessionFactoryShouldNotDisableOtherDefaults() {
104+
this.contextRunner.withUserConfiguration(CustomSessionFactory.class).run((context) -> {
105+
assertThat(context).hasSingleBean(SessionFactory.class);
106+
assertThat(context.getBean(SessionFactory.class)).isSameAs(context.getBean("customSessionFactory"));
107+
assertThat(context).hasSingleBean(Neo4jTransactionManager.class);
108+
assertThat(context).hasSingleBean(OpenSessionInViewInterceptor.class);
109+
});
110+
}
111+
102112
@Test
103113
void customConfiguration() {
104114
this.contextRunner.withUserConfiguration(CustomConfiguration.class).run((context) -> {

spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4667,9 +4667,9 @@ properties, as shown in the following example:
46674667
spring.data.neo4j.password=secret
46684668
----
46694669

4670-
You can take full control over the session creation by adding a
4671-
`org.neo4j.ogm.config.Configuration` `@Bean`. Also, adding a `@Bean` of type
4672-
`SessionFactory` disables the auto-configuration and gives you full control.
4670+
You can take full control over the session creation by either adding a
4671+
`org.neo4j.ogm.config.Configuration` bean or a `org.neo4j.ogm.session.SessionFactory`
4672+
bean.
46734673

46744674

46754675

0 commit comments

Comments
 (0)