2121import java .time .Duration ;
2222import java .util .List ;
2323import java .util .Locale ;
24- import java .util .ServiceLoader ;
2524import java .util .concurrent .TimeUnit ;
2625
27- import io .micrometer .observation .ObservationRegistry ;
2826import org .jspecify .annotations .Nullable ;
29- import org .neo4j .bolt .connection .BoltConnectionProviderFactory ;
3027import org .neo4j .driver .AuthToken ;
3128import org .neo4j .driver .AuthTokenManager ;
3229import org .neo4j .driver .AuthTokens ;
3532import org .neo4j .driver .Driver ;
3633import org .neo4j .driver .GraphDatabase ;
3734import org .neo4j .driver .internal .Scheme ;
38- import org .neo4j .driver .observation .micrometer .MicrometerObservationProvider ;
3935
4036import org .springframework .beans .factory .ObjectProvider ;
4137import org .springframework .boot .autoconfigure .AutoConfiguration ;
4844import org .springframework .boot .neo4j .autoconfigure .Neo4jProperties .Pool ;
4945import org .springframework .boot .neo4j .autoconfigure .Neo4jProperties .Security ;
5046import org .springframework .context .annotation .Bean ;
51- import org .springframework .core .env .Environment ;
5247import org .springframework .util .Assert ;
5348import org .springframework .util .StringUtils ;
5449
6762@ EnableConfigurationProperties (Neo4jProperties .class )
6863public final class Neo4jAutoConfiguration {
6964
70- private static final boolean HAS_DRIVER_METRICS ;
71-
72- static {
73- boolean metricsObservationProviderFound = true ;
74- try {
75- Class .forName ("org.neo4j.driver.observation.micrometer.MicrometerObservationProvider" , false ,
76- Neo4jAutoConfiguration .class .getClassLoader ());
77- }
78- catch (ClassNotFoundException ex ) {
79- metricsObservationProviderFound = false ;
80- }
81- HAS_DRIVER_METRICS = metricsObservationProviderFound ;
82- }
83-
8465 @ Bean
8566 @ ConditionalOnMissingBean (Neo4jConnectionDetails .class )
8667 PropertiesNeo4jConnectionDetails neo4jConnectionDetails (Neo4jProperties properties ,
@@ -90,12 +71,10 @@ PropertiesNeo4jConnectionDetails neo4jConnectionDetails(Neo4jProperties properti
9071
9172 @ Bean
9273 @ ConditionalOnMissingBean
93- Driver neo4jDriver (Neo4jProperties properties , Environment environment , Neo4jConnectionDetails connectionDetails ,
94- ObjectProvider <ConfigBuilderCustomizer > configBuilderCustomizers ,
95- ObjectProvider <ObservationRegistry > observationRegistryProvider ) {
96-
74+ Driver neo4jDriver (Neo4jProperties properties , Neo4jConnectionDetails connectionDetails ,
75+ ObjectProvider <ConfigBuilderCustomizer > configBuilderCustomizers ) {
9776 Config config = mapDriverConfig (properties , connectionDetails ,
98- configBuilderCustomizers .orderedStream ().toList (), observationRegistryProvider );
77+ configBuilderCustomizers .orderedStream ().toList ());
9978 AuthTokenManager authTokenManager = connectionDetails .getAuthTokenManager ();
10079 if (authTokenManager != null ) {
10180 return GraphDatabase .driver (connectionDetails .getUri (), authTokenManager , config );
@@ -105,10 +84,9 @@ Driver neo4jDriver(Neo4jProperties properties, Environment environment, Neo4jCon
10584 }
10685
10786 Config mapDriverConfig (Neo4jProperties properties , Neo4jConnectionDetails connectionDetails ,
108- List <ConfigBuilderCustomizer > customizers ,
109- ObjectProvider <ObservationRegistry > observationRegistryProvider ) {
87+ List <ConfigBuilderCustomizer > customizers ) {
11088 Config .ConfigBuilder builder = Config .builder ();
111- configurePoolSettings (builder , properties .getPool (), observationRegistryProvider );
89+ configurePoolSettings (builder , properties .getPool ());
11290 URI uri = connectionDetails .getUri ();
11391 String scheme = (uri != null ) ? uri .getScheme () : "bolt" ;
11492 configureDriverSettings (builder , properties , isSimpleScheme (scheme ));
@@ -118,16 +96,10 @@ Config mapDriverConfig(Neo4jProperties properties, Neo4jConnectionDetails connec
11896
11997 private boolean isSimpleScheme (String scheme ) {
12098 String lowerCaseScheme = scheme .toLowerCase (Locale .ENGLISH );
121- if (!ServiceLoader .load (BoltConnectionProviderFactory .class )
122- .stream ()
123- .anyMatch ((p ) -> p .get ().supports (lowerCaseScheme ))) {
124- throw new IllegalArgumentException (String .format ("'%s' is not a supported scheme." , scheme ));
125- }
12699 return !Scheme .isSecurityScheme (lowerCaseScheme );
127100 }
128101
129- private void configurePoolSettings (Config .ConfigBuilder builder , Pool pool ,
130- ObjectProvider <ObservationRegistry > observationRegistryProvider ) {
102+ private void configurePoolSettings (Config .ConfigBuilder builder , Pool pool ) {
131103 if (pool .isLogLeakedSessions ()) {
132104 builder .withLeakedSessionsLogging ();
133105 }
@@ -139,11 +111,6 @@ private void configurePoolSettings(Config.ConfigBuilder builder, Pool pool,
139111 builder .withMaxConnectionLifetime (pool .getMaxConnectionLifetime ().toMillis (), TimeUnit .MILLISECONDS );
140112 builder .withConnectionAcquisitionTimeout (pool .getConnectionAcquisitionTimeout ().toMillis (),
141113 TimeUnit .MILLISECONDS );
142- observationRegistryProvider .ifAvailable ((orp ) -> {
143- if (pool .isMetricsEnabled () && HAS_DRIVER_METRICS ) {
144- builder .withObservationProvider (MicrometerObservationProvider .builder (orp ).build ());
145- }
146- });
147114 }
148115
149116 private void configureDriverSettings (Config .ConfigBuilder builder , Neo4jProperties properties ,
0 commit comments