5
5
6
6
package io .opentelemetry .instrumentation .spring .autoconfigure ;
7
7
8
- import io .opentelemetry .api .GlobalOpenTelemetry ;
9
8
import io .opentelemetry .api .OpenTelemetry ;
9
+ import io .opentelemetry .api .incubator .config .ConfigProvider ;
10
10
import io .opentelemetry .api .incubator .config .GlobalConfigProvider ;
11
11
import io .opentelemetry .api .trace .TracerProvider ;
12
+ import io .opentelemetry .instrumentation .api .incubator .config .internal .InstrumentationConfig ;
12
13
import io .opentelemetry .instrumentation .api .internal .EmbeddedInstrumentationProperties ;
13
14
import io .opentelemetry .instrumentation .sdk .DeclarativeConfigPropertiesBridge ;
14
15
import io .opentelemetry .instrumentation .spring .autoconfigure .internal .OtelMapConverter ;
15
16
import io .opentelemetry .instrumentation .spring .autoconfigure .internal .SdkEnabled ;
17
+ import io .opentelemetry .instrumentation .spring .autoconfigure .internal .properties .ConfigPropertiesBridge ;
16
18
import io .opentelemetry .instrumentation .spring .autoconfigure .internal .properties .OtelResourceProperties ;
17
19
import io .opentelemetry .instrumentation .spring .autoconfigure .internal .properties .OtelSpringProperties ;
18
20
import io .opentelemetry .instrumentation .spring .autoconfigure .internal .properties .OtlpExporterProperties ;
@@ -72,8 +74,7 @@ public OpenTelemetryAutoConfiguration() {}
72
74
static class OpenTelemetrySdkConfig {
73
75
74
76
@ Bean
75
- public ComponentLoader openTelemetrySdkComponentLoader (
76
- ApplicationContext applicationContext ) {
77
+ public ComponentLoader openTelemetrySdkComponentLoader (ApplicationContext applicationContext ) {
77
78
return new OpenTelemetrySdkComponentLoader (applicationContext );
78
79
}
79
80
@@ -158,14 +159,14 @@ public OpenTelemetryConfigurationModel openTelemetryConfigurationModel(
158
159
}
159
160
160
161
@ Bean
161
- public OpenTelemetry openTelemetry (OpenTelemetryConfigurationModel model , ComponentLoader componentLoader ) {
162
- OpenTelemetrySdk sdk =
163
- DeclarativeConfiguration .create (model , componentLoader );
162
+ public OpenTelemetry openTelemetry (
163
+ OpenTelemetryConfigurationModel model , ComponentLoader componentLoader ) {
164
+ OpenTelemetrySdk sdk = DeclarativeConfiguration .create (model , componentLoader );
164
165
165
166
Runtime .getRuntime ().addShutdownHook (new Thread (sdk ::close ));
166
167
167
- GlobalOpenTelemetry . set ( sdk );
168
- GlobalConfigProvider .set (SdkConfigProvider . create ( model ) );
168
+ SdkConfigProvider configProvider = SdkConfigProvider . create ( model );
169
+ GlobalConfigProvider .set (configProvider );
169
170
170
171
System .out .println (
171
172
"OpenTelemetry SDK initialized with configuration from: " + sdk ); // todo remove
@@ -179,6 +180,17 @@ public OpenTelemetry openTelemetry(OpenTelemetryConfigurationModel model, Compon
179
180
return null ;
180
181
}
181
182
183
+ @ Bean
184
+ public ConfigProvider configProvider (OpenTelemetryConfigurationModel model ) {
185
+ return SdkConfigProvider .create (model );
186
+ }
187
+
188
+ @ Bean
189
+ public InstrumentationConfig instrumentationConfig (
190
+ ConfigProperties properties , ConfigProvider configProvider ) {
191
+ return new ConfigPropertiesBridge (properties , configProvider );
192
+ }
193
+
182
194
/**
183
195
* Expose the {@link ConfigProperties} bean for use in other auto-configurations.
184
196
*
0 commit comments