Skip to content

Commit 7fd4801

Browse files
committed
Merge pull request #43957 from nosan
* pr/43957: Remove the use of a FactoryBean when auto-configuring VirtualThreadMetrics Closes gh-43957
2 parents 81a5257 + 1262333 commit 7fd4801

File tree

1 file changed

+4
-46
lines changed

1 file changed

+4
-46
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.java

+4-46
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,8 @@
1616

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

19-
import java.io.Closeable;
20-
2119
import io.micrometer.core.instrument.MeterRegistry;
20+
import io.micrometer.core.instrument.binder.MeterBinder;
2221
import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics;
2322
import io.micrometer.core.instrument.binder.jvm.JvmCompilationMetrics;
2423
import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics;
@@ -31,9 +30,6 @@
3130
import org.springframework.aot.hint.RuntimeHints;
3231
import org.springframework.aot.hint.RuntimeHintsRegistrar;
3332
import org.springframework.beans.BeanUtils;
34-
import org.springframework.beans.factory.BeanClassLoaderAware;
35-
import org.springframework.beans.factory.DisposableBean;
36-
import org.springframework.beans.factory.FactoryBean;
3733
import org.springframework.boot.autoconfigure.AutoConfiguration;
3834
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
3935
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
@@ -103,47 +99,9 @@ public JvmCompilationMetrics jvmCompilationMetrics() {
10399
@ConditionalOnClass(name = VIRTUAL_THREAD_METRICS_CLASS)
104100
@ConditionalOnMissingBean(type = VIRTUAL_THREAD_METRICS_CLASS)
105101
@ImportRuntimeHints(VirtualThreadMetricsRuntimeHintsRegistrar.class)
106-
VirtualThreadMetricsFactoryBean virtualThreadMetrics() {
107-
return new VirtualThreadMetricsFactoryBean();
108-
}
109-
110-
static final class VirtualThreadMetricsFactoryBean
111-
implements FactoryBean<Object>, BeanClassLoaderAware, DisposableBean {
112-
113-
private ClassLoader classLoader;
114-
115-
private Class<?> instanceType;
116-
117-
private Object instance;
118-
119-
@Override
120-
public void setBeanClassLoader(ClassLoader classLoader) {
121-
this.classLoader = classLoader;
122-
}
123-
124-
@Override
125-
public Object getObject() {
126-
if (this.instance == null) {
127-
this.instance = BeanUtils.instantiateClass(getObjectType());
128-
}
129-
return this.instance;
130-
}
131-
132-
@Override
133-
public Class<?> getObjectType() {
134-
if (this.instanceType == null) {
135-
this.instanceType = ClassUtils.resolveClassName(VIRTUAL_THREAD_METRICS_CLASS, this.classLoader);
136-
}
137-
return this.instanceType;
138-
}
139-
140-
@Override
141-
public void destroy() throws Exception {
142-
if (this.instance instanceof Closeable closeable) {
143-
closeable.close();
144-
}
145-
}
146-
102+
MeterBinder virtualThreadMetrics() throws ClassNotFoundException {
103+
Class<?> clazz = ClassUtils.forName(VIRTUAL_THREAD_METRICS_CLASS, getClass().getClassLoader());
104+
return (MeterBinder) BeanUtils.instantiateClass(clazz);
147105
}
148106

149107
static final class VirtualThreadMetricsRuntimeHintsRegistrar implements RuntimeHintsRegistrar {

0 commit comments

Comments
 (0)