Skip to content

Commit c6fde1e

Browse files
committed
Polish "Update Neo4j health check to use the Neo4j Driver"
See gh-22302
1 parent c5a7815 commit c6fde1e

21 files changed

+357
-983
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ dependencies {
8686
optional("org.liquibase:liquibase-core")
8787
optional("org.mongodb:mongodb-driver-reactivestreams")
8888
optional("org.mongodb:mongodb-driver-sync")
89+
optional("org.neo4j.driver:neo4j-java-driver")
8990
optional("org.springframework:spring-jdbc")
9091
optional("org.springframework:spring-jms")
9192
optional("org.springframework:spring-messaging")
@@ -96,7 +97,6 @@ dependencies {
9697
optional("org.springframework.data:spring-data-couchbase")
9798
optional("org.springframework.data:spring-data-ldap")
9899
optional("org.springframework.data:spring-data-mongodb")
99-
optional("org.springframework.data:spring-data-neo4j")
100100
optional("org.springframework.data:spring-data-redis")
101101
optional("org.springframework.data:spring-data-elasticsearch")
102102
optional("org.springframework.data:spring-data-solr")

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/neo4j/Neo4jDriverMetricsAutoConfiguration.java

Lines changed: 0 additions & 78 deletions
This file was deleted.

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/neo4j/Neo4jHealthContributorAutoConfiguration.java

Lines changed: 11 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -16,77 +16,36 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.neo4j;
1818

19-
import org.springframework.boot.actuate.autoconfigure.health.CompositeHealthContributorConfiguration;
20-
import org.springframework.boot.actuate.autoconfigure.health.CompositeReactiveHealthContributorConfiguration;
19+
import org.neo4j.driver.Driver;
20+
2121
import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator;
22-
import org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration;
23-
import org.springframework.boot.actuate.health.Health;
24-
import org.springframework.boot.actuate.health.HealthContributor;
25-
import org.springframework.boot.actuate.health.ReactiveHealthContributor;
22+
import org.springframework.boot.actuate.autoconfigure.neo4j.Neo4jHealthContributorConfigurations.Neo4jConfiguration;
23+
import org.springframework.boot.actuate.autoconfigure.neo4j.Neo4jHealthContributorConfigurations.Neo4jReactiveConfiguration;
2624
import org.springframework.boot.actuate.neo4j.Neo4jHealthIndicator;
2725
import org.springframework.boot.actuate.neo4j.Neo4jReactiveHealthIndicator;
2826
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
29-
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
3027
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
3128
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
3229
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
33-
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
34-
import org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration;
35-
import org.springframework.boot.autoconfigure.neo4j.Neo4jDriverAutoConfiguration;
36-
import org.springframework.context.annotation.Bean;
30+
import org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration;
3731
import org.springframework.context.annotation.Configuration;
38-
import org.springframework.core.annotation.Order;
39-
import reactor.core.publisher.Flux;
40-
41-
import java.util.Map;
42-
43-
import org.neo4j.driver.Driver;
32+
import org.springframework.context.annotation.Import;
4433

4534
/**
46-
* {@link EnableAutoConfiguration Auto-configuration} for {@link Neo4jHealthIndicator}.
47-
* The auto-configuration here is responsible for both imperative and reactive health
48-
* checks. The reactive health check has precedence over the imperative one.
35+
* {@link EnableAutoConfiguration Auto-configuration} for
36+
* {@link Neo4jReactiveHealthIndicator} and {@link Neo4jHealthIndicator}.
4937
*
5038
* @author Eric Spiegelberg
5139
* @author Stephane Nicoll
5240
* @author Michael J. Simons
5341
* @since 2.0.0
5442
*/
5543
@Configuration(proxyBeanMethods = false)
56-
@ConditionalOnClass({ Driver.class, Health.class })
44+
@ConditionalOnClass(Driver.class)
5745
@ConditionalOnBean(Driver.class)
5846
@ConditionalOnEnabledHealthIndicator("neo4j")
59-
@AutoConfigureBefore(HealthContributorAutoConfiguration.class)
60-
@AutoConfigureAfter({ Neo4jDriverAutoConfiguration.class, Neo4jDataAutoConfiguration.class })
47+
@AutoConfigureAfter(Neo4jAutoConfiguration.class)
48+
@Import({ Neo4jReactiveConfiguration.class, Neo4jConfiguration.class })
6149
public class Neo4jHealthContributorAutoConfiguration {
6250

63-
@Configuration(proxyBeanMethods = false)
64-
@Order(-20)
65-
static class Neo4jHealthIndicatorConfiguration
66-
extends CompositeHealthContributorConfiguration<Neo4jHealthIndicator, Driver> {
67-
68-
@Bean
69-
// If Neo4jReactiveHealthIndicatorConfiguration kicked in, don't add the
70-
// imperative version as well
71-
@ConditionalOnMissingBean(name = "neo4jHealthContributor")
72-
public HealthContributor neo4jHealthContributor(Map<String, Driver> drivers) {
73-
return createContributor(drivers);
74-
}
75-
76-
}
77-
78-
@Configuration(proxyBeanMethods = false)
79-
@ConditionalOnClass({ Flux.class })
80-
@Order(-30)
81-
static class Neo4jReactiveHealthIndicatorConfiguration
82-
extends CompositeReactiveHealthContributorConfiguration<Neo4jReactiveHealthIndicator, Driver> {
83-
84-
@Bean
85-
@ConditionalOnMissingBean(name = "neo4jHealthContributor")
86-
public ReactiveHealthContributor neo4jHealthContributor(Map<String, Driver> drivers) {
87-
return createComposite(drivers);
88-
}
89-
90-
}
91-
9251
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*
2+
* Copyright 2012-2020 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.springframework.boot.actuate.autoconfigure.neo4j;
18+
19+
import java.util.Map;
20+
21+
import org.neo4j.driver.Driver;
22+
import reactor.core.publisher.Flux;
23+
24+
import org.springframework.boot.actuate.autoconfigure.health.CompositeHealthContributorConfiguration;
25+
import org.springframework.boot.actuate.autoconfigure.health.CompositeReactiveHealthContributorConfiguration;
26+
import org.springframework.boot.actuate.health.HealthContributor;
27+
import org.springframework.boot.actuate.health.ReactiveHealthContributor;
28+
import org.springframework.boot.actuate.neo4j.Neo4jHealthIndicator;
29+
import org.springframework.boot.actuate.neo4j.Neo4jReactiveHealthIndicator;
30+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
31+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
32+
import org.springframework.context.annotation.Bean;
33+
import org.springframework.context.annotation.Configuration;
34+
35+
/**
36+
* Health contributor options for Neo4j.
37+
*
38+
* @author Michael J. Simons
39+
* @author Stephane Nicoll
40+
*/
41+
class Neo4jHealthContributorConfigurations {
42+
43+
@Configuration(proxyBeanMethods = false)
44+
static class Neo4jConfiguration extends CompositeHealthContributorConfiguration<Neo4jHealthIndicator, Driver> {
45+
46+
@Bean
47+
@ConditionalOnMissingBean(name = { "neo4jHealthIndicator", "neo4jHealthContributor" })
48+
HealthContributor neo4jHealthContributor(Map<String, Driver> drivers) {
49+
return createContributor(drivers);
50+
}
51+
52+
}
53+
54+
@Configuration(proxyBeanMethods = false)
55+
@ConditionalOnClass(Flux.class)
56+
static class Neo4jReactiveConfiguration
57+
extends CompositeReactiveHealthContributorConfiguration<Neo4jReactiveHealthIndicator, Driver> {
58+
59+
@Bean
60+
@ConditionalOnMissingBean(name = { "neo4jHealthIndicator", "neo4jHealthContributor" })
61+
ReactiveHealthContributor neo4jHealthContributor(Map<String, Driver> drivers) {
62+
return createContributor(drivers);
63+
}
64+
65+
}
66+
67+
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/SpringApplicationHierarchyTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
3333
import org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration;
3434
import org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration;
35+
import org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration;
3536
import org.springframework.boot.builder.SpringApplicationBuilder;
3637
import org.springframework.boot.test.util.ApplicationContextTestUtils;
3738
import org.springframework.context.ConfigurableApplicationContext;
@@ -69,7 +70,7 @@ void testChild() {
6970
@EnableAutoConfiguration(exclude = { ElasticsearchDataAutoConfiguration.class,
7071
ElasticsearchRepositoriesAutoConfiguration.class, CassandraAutoConfiguration.class,
7172
CassandraDataAutoConfiguration.class, MongoDataAutoConfiguration.class,
72-
MongoReactiveDataAutoConfiguration.class, Neo4jDataAutoConfiguration.class,
73+
MongoReactiveDataAutoConfiguration.class, Neo4jAutoConfiguration.class, Neo4jDataAutoConfiguration.class,
7374
Neo4jRepositoriesAutoConfiguration.class, RedisAutoConfiguration.class,
7475
RedisRepositoriesAutoConfiguration.class, FlywayAutoConfiguration.class, MetricsAutoConfiguration.class })
7576
static class Parent {
@@ -80,7 +81,7 @@ static class Parent {
8081
@EnableAutoConfiguration(exclude = { ElasticsearchDataAutoConfiguration.class,
8182
ElasticsearchRepositoriesAutoConfiguration.class, CassandraAutoConfiguration.class,
8283
CassandraDataAutoConfiguration.class, MongoDataAutoConfiguration.class,
83-
MongoReactiveDataAutoConfiguration.class, Neo4jDataAutoConfiguration.class,
84+
MongoReactiveDataAutoConfiguration.class, Neo4jAutoConfiguration.class, Neo4jDataAutoConfiguration.class,
8485
Neo4jRepositoriesAutoConfiguration.class, RedisAutoConfiguration.class,
8586
RedisRepositoriesAutoConfiguration.class, FlywayAutoConfiguration.class, MetricsAutoConfiguration.class })
8687
static class Child {

0 commit comments

Comments
 (0)