Skip to content

Commit 01d7a35

Browse files
committed
GH-1338 - Improve bootstrap of ApplicationModulesEndpoint.
We now avoid the eager reference to an ApplicationModulesRuntime instance to avoid it bootstrapping at all, in case the precomputed variant is used.
1 parent 52ee064 commit 01d7a35

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

spring-modulith-actuator/src/main/java/org/springframework/modulith/actuator/ApplicationModulesEndpoint.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020
import org.slf4j.Logger;
2121
import org.slf4j.LoggerFactory;
22+
import org.springframework.beans.factory.BeanFactoryInitializer;
23+
import org.springframework.beans.factory.ListableBeanFactory;
2224
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
2325
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
2426
import org.springframework.modulith.core.ApplicationModules;
@@ -32,7 +34,7 @@
3234
* @author Oliver Drotbohm
3335
*/
3436
@Endpoint(id = "modulith")
35-
public class ApplicationModulesEndpoint {
37+
public class ApplicationModulesEndpoint implements BeanFactoryInitializer<ListableBeanFactory> {
3638

3739
private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationModulesEndpoint.class);
3840

@@ -87,4 +89,13 @@ public static ApplicationModulesEndpoint ofApplicationModules(Supplier<Applicati
8789
String getApplicationModules() {
8890
return structure.obtain();
8991
}
92+
93+
/*
94+
* (non-Javadoc)
95+
* @see org.springframework.beans.factory.BeanFactoryInitializer#initialize(org.springframework.beans.factory.ListableBeanFactory)
96+
*/
97+
@Override
98+
public void initialize(ListableBeanFactory beanFactory) {
99+
structure.obtain();
100+
}
90101
}

spring-modulith-actuator/src/main/java/org/springframework/modulith/actuator/autoconfigure/ApplicationModulesEndpointConfiguration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import org.slf4j.Logger;
2121
import org.slf4j.LoggerFactory;
22+
import org.springframework.beans.factory.ObjectProvider;
2223
import org.springframework.boot.autoconfigure.AutoConfiguration;
2324
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2425
import org.springframework.context.annotation.Bean;
@@ -44,7 +45,7 @@ class ApplicationModulesEndpointConfiguration {
4445

4546
@Bean
4647
@ConditionalOnMissingBean
47-
ApplicationModulesEndpoint applicationModulesEndpoint(ApplicationModulesRuntime runtime) {
48+
ApplicationModulesEndpoint applicationModulesEndpoint(ObjectProvider<ApplicationModulesRuntime> runtime) {
4849

4950
if (PRECOMPUTED.exists()) {
5051

@@ -54,7 +55,7 @@ ApplicationModulesEndpoint applicationModulesEndpoint(ApplicationModulesRuntime
5455
return ApplicationModulesEndpoint.precomputed(fileContent);
5556

5657
} else {
57-
return ApplicationModulesEndpoint.ofApplicationModules(runtime);
58+
return ApplicationModulesEndpoint.ofApplicationModules(runtime.getObject());
5859
}
5960
}
6061
}

0 commit comments

Comments
 (0)