|
27 | 27 | import org.springframework.boot.autoconfigure.container.ContainerImageMetadata;
|
28 | 28 | import org.springframework.boot.autoconfigure.service.connection.ConnectionDetails;
|
29 | 29 | import org.springframework.boot.autoconfigure.service.connection.ConnectionDetailsFactories;
|
| 30 | +import org.springframework.boot.context.properties.bind.Binder; |
30 | 31 | import org.springframework.boot.docker.compose.core.RunningService;
|
| 32 | +import org.springframework.boot.docker.compose.lifecycle.DockerComposeProperties; |
31 | 33 | import org.springframework.boot.docker.compose.lifecycle.DockerComposeServicesReadyEvent;
|
32 | 34 | import org.springframework.context.ApplicationContext;
|
33 | 35 | import org.springframework.context.ApplicationListener;
|
|
46 | 48 | class DockerComposeServiceConnectionsApplicationListener
|
47 | 49 | implements ApplicationListener<DockerComposeServicesReadyEvent> {
|
48 | 50 |
|
49 |
| - private final ConnectionDetailsFactories factories; |
50 |
| - |
51 | 51 | DockerComposeServiceConnectionsApplicationListener() {
|
52 |
| - this(new ConnectionDetailsFactories()); |
53 |
| - } |
54 | 52 |
|
55 |
| - DockerComposeServiceConnectionsApplicationListener(ConnectionDetailsFactories factories) { |
56 |
| - this.factories = factories; |
57 | 53 | }
|
58 | 54 |
|
59 | 55 | @Override
|
60 | 56 | public void onApplicationEvent(DockerComposeServicesReadyEvent event) {
|
61 | 57 | ApplicationContext applicationContext = event.getSource();
|
62 | 58 | if (applicationContext instanceof BeanDefinitionRegistry registry) {
|
| 59 | + Binder binder = Binder.get(applicationContext.getEnvironment()); |
| 60 | + DockerComposeProperties properties = DockerComposeProperties.get(binder); |
| 61 | + boolean useContextClassLoader = properties.isUseContextClassLoader(); |
| 62 | + ConnectionDetailsFactories factories = new ConnectionDetailsFactories(useContextClassLoader); |
63 | 63 | Environment environment = applicationContext.getEnvironment();
|
64 |
| - registerConnectionDetails(registry, environment, event.getRunningServices()); |
| 64 | + registerConnectionDetails(registry, environment, event.getRunningServices(), factories); |
65 | 65 | }
|
66 | 66 | }
|
67 | 67 |
|
68 | 68 | private void registerConnectionDetails(BeanDefinitionRegistry registry, Environment environment,
|
69 |
| - List<RunningService> runningServices) { |
| 69 | + List<RunningService> runningServices, ConnectionDetailsFactories factories) { |
70 | 70 | for (RunningService runningService : runningServices) {
|
71 | 71 | DockerComposeConnectionSource source = new DockerComposeConnectionSource(runningService, environment);
|
72 |
| - this.factories.getConnectionDetails(source, false).forEach((connectionDetailsType, connectionDetails) -> { |
| 72 | + factories.getConnectionDetails(source, false).forEach((connectionDetailsType, connectionDetails) -> { |
73 | 73 | register(registry, runningService, connectionDetailsType, connectionDetails);
|
74 |
| - this.factories.getConnectionDetails(connectionDetails, false) |
| 74 | + factories.getConnectionDetails(connectionDetails, false) |
75 | 75 | .forEach((adaptedType, adaptedDetails) -> register(registry, runningService, adaptedType,
|
76 | 76 | adaptedDetails));
|
77 | 77 | });
|
|
0 commit comments