|
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