|
20 | 20 |
|
21 | 21 | import org.neo4j.driver.Driver;
|
22 | 22 |
|
| 23 | +import org.springframework.beans.factory.ObjectProvider; |
23 | 24 | import org.springframework.boot.autoconfigure.AutoConfiguration;
|
24 | 25 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
25 | 26 | import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
|
29 | 30 | import org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration;
|
30 | 31 | import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration;
|
31 | 32 | import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizationAutoConfiguration;
|
| 33 | +import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers; |
32 | 34 | import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
33 | 35 | import org.springframework.context.ApplicationContext;
|
34 | 36 | import org.springframework.context.annotation.Bean;
|
35 |
| -import org.springframework.context.annotation.Import; |
36 | 37 | import org.springframework.data.neo4j.aot.Neo4jManagedTypes;
|
37 | 38 | import org.springframework.data.neo4j.core.DatabaseSelectionProvider;
|
| 39 | +import org.springframework.data.neo4j.core.Neo4jClient; |
| 40 | +import org.springframework.data.neo4j.core.Neo4jOperations; |
| 41 | +import org.springframework.data.neo4j.core.Neo4jTemplate; |
38 | 42 | import org.springframework.data.neo4j.core.convert.Neo4jConversions;
|
39 | 43 | import org.springframework.data.neo4j.core.mapping.Neo4jMappingContext;
|
40 | 44 | import org.springframework.data.neo4j.core.schema.Node;
|
41 | 45 | import org.springframework.data.neo4j.core.schema.RelationshipProperties;
|
42 | 46 | import org.springframework.data.neo4j.core.transaction.Neo4jTransactionManager;
|
| 47 | +import org.springframework.data.neo4j.repository.config.Neo4jRepositoryConfigurationExtension; |
43 | 48 | import org.springframework.transaction.PlatformTransactionManager;
|
| 49 | +import org.springframework.transaction.TransactionManager; |
44 | 50 |
|
45 | 51 | /**
|
46 | 52 | * {@link EnableAutoConfiguration Auto-configuration} for Spring Data Neo4j.
|
|
58 | 64 | @ConditionalOnClass({ Driver.class, Neo4jTransactionManager.class, PlatformTransactionManager.class })
|
59 | 65 | @EnableConfigurationProperties(Neo4jDataProperties.class)
|
60 | 66 | @ConditionalOnBean(Driver.class)
|
61 |
| -@Import({ Neo4jTransactionManagerConfiguration.class, Neo4jTransactionalComponentsConfiguration.class }) |
62 | 67 | public class Neo4jDataAutoConfiguration {
|
63 | 68 |
|
64 | 69 | @Bean
|
@@ -91,4 +96,25 @@ public DatabaseSelectionProvider databaseSelectionProvider(Neo4jDataProperties p
|
91 | 96 | : DatabaseSelectionProvider.getDefaultSelectionProvider();
|
92 | 97 | }
|
93 | 98 |
|
| 99 | + @Bean(Neo4jRepositoryConfigurationExtension.DEFAULT_NEO4J_CLIENT_BEAN_NAME) |
| 100 | + @ConditionalOnMissingBean |
| 101 | + public Neo4jClient neo4jClient(Driver driver, DatabaseSelectionProvider databaseNameProvider) { |
| 102 | + return Neo4jClient.create(driver, databaseNameProvider); |
| 103 | + } |
| 104 | + |
| 105 | + @Bean(Neo4jRepositoryConfigurationExtension.DEFAULT_NEO4J_TEMPLATE_BEAN_NAME) |
| 106 | + @ConditionalOnMissingBean(Neo4jOperations.class) |
| 107 | + public Neo4jTemplate neo4jTemplate(Neo4jClient neo4jClient, Neo4jMappingContext neo4jMappingContext) { |
| 108 | + return new Neo4jTemplate(neo4jClient, neo4jMappingContext); |
| 109 | + } |
| 110 | + |
| 111 | + @Bean(Neo4jRepositoryConfigurationExtension.DEFAULT_TRANSACTION_MANAGER_BEAN_NAME) |
| 112 | + @ConditionalOnMissingBean(TransactionManager.class) |
| 113 | + public Neo4jTransactionManager transactionManager(Driver driver, DatabaseSelectionProvider databaseNameProvider, |
| 114 | + ObjectProvider<TransactionManagerCustomizers> optionalCustomizers) { |
| 115 | + Neo4jTransactionManager transactionManager = new Neo4jTransactionManager(driver, databaseNameProvider); |
| 116 | + optionalCustomizers.ifAvailable((customizer) -> customizer.customize((TransactionManager) transactionManager)); |
| 117 | + return transactionManager; |
| 118 | + } |
| 119 | + |
94 | 120 | }
|
0 commit comments