Skip to content

Commit 163673a

Browse files
committed
GH-933 - Observability proxying now considers global proxy settings.
We now lookup the AbstractAutoProxyCreator registered for global proxy settings and apply that to the ProxyFactory used to create the proxies applying the observability decoration.
1 parent 22f758a commit 163673a

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleTracingSupport.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,21 @@
2020
import org.springframework.aop.Advisor;
2121
import org.springframework.aop.framework.Advised;
2222
import org.springframework.aop.framework.ProxyFactory;
23+
import org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator;
24+
import org.springframework.beans.BeansException;
2325
import org.springframework.beans.factory.BeanClassLoaderAware;
26+
import org.springframework.beans.factory.BeanFactory;
27+
import org.springframework.beans.factory.BeanFactoryAware;
28+
import org.springframework.lang.Nullable;
2429
import org.springframework.scheduling.annotation.AsyncAnnotationAdvisor;
2530

2631
/**
2732
* @author Oliver Drotbohm
2833
*/
29-
class ModuleTracingSupport implements BeanClassLoaderAware {
34+
class ModuleTracingSupport implements BeanClassLoaderAware, BeanFactoryAware {
3035

3136
private ClassLoader classLoader;
37+
private @Nullable AbstractAutoProxyCreator creator;
3238

3339
/*
3440
* (non-Javadoc)
@@ -39,6 +45,15 @@ public void setBeanClassLoader(ClassLoader classLoader) {
3945
this.classLoader = classLoader;
4046
}
4147

48+
/*
49+
* (non-Javadoc)
50+
* @see org.springframework.beans.factory.BeanFactoryAware#setBeanFactory(org.springframework.beans.factory.BeanFactory)
51+
*/
52+
@Override
53+
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
54+
this.creator = beanFactory.getBeanProvider(AbstractAutoProxyCreator.class).getIfAvailable();
55+
}
56+
4257
protected final Object addAdvisor(Object bean, Advisor advisor) {
4358
return addAdvisor(bean, advisor, __ -> {});
4459
}
@@ -53,7 +68,12 @@ protected final Object addAdvisor(Object bean, Advisor advisor, Consumer<ProxyFa
5368

5469
} else {
5570

56-
ProxyFactory factory = new ProxyFactory(bean);
71+
var factory = new ProxyFactory(bean);
72+
73+
if (creator != null) {
74+
factory.copyFrom(creator);
75+
}
76+
5777
customizer.accept(factory);
5878
factory.addAdvisor(advisor);
5979

@@ -63,7 +83,7 @@ protected final Object addAdvisor(Object bean, Advisor advisor, Consumer<ProxyFa
6383

6484
private static int asyncAdvisorIndex(Advised advised) {
6585

66-
Advisor[] advisors = advised.getAdvisors();
86+
var advisors = advised.getAdvisors();
6787

6888
for (int i = 0; i < advised.getAdvisorCount(); i++) {
6989

0 commit comments

Comments
 (0)