Skip to content

Commit 0ec02e4

Browse files
committed
fixes geneirc bean registration
1 parent 28cfba9 commit 0ec02e4

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

spring/src/main/java/io/kubernetes/client/spring/extended/controller/KubernetesInformerFactoryProcessor.java

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@
2222
import org.slf4j.LoggerFactory;
2323
import org.springframework.beans.BeansException;
2424
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
25-
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
2625
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
26+
import org.springframework.beans.factory.support.AbstractBeanDefinition;
27+
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
28+
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
29+
import org.springframework.beans.factory.support.RootBeanDefinition;
2730
import org.springframework.core.Ordered;
2831
import org.springframework.core.ResolvableType;
2932
import org.springframework.stereotype.Component;
@@ -37,13 +40,16 @@
3740
* injects informers to spring context with the underlying constructing process hidden from users.
3841
*/
3942
@Component
40-
public class KubernetesInformerFactoryProcessor implements BeanFactoryPostProcessor, Ordered {
43+
public class KubernetesInformerFactoryProcessor
44+
implements BeanDefinitionRegistryPostProcessor, Ordered {
4145

4246
private static final Logger log =
4347
LoggerFactory.getLogger(KubernetesInformerFactoryProcessor.class);
4448

4549
public static final int ORDER = 0;
4650

51+
private BeanDefinitionRegistry beanDefinitionRegistry;
52+
4753
@Override
4854
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
4955
throws BeansException {
@@ -124,17 +130,35 @@ public Watchable watch(CallGeneratorParams params) throws ApiException {
124130
ResolvableType informerType =
125131
ResolvableType.forClassWithGenerics(
126132
SharedInformer.class, kubernetesInformer.apiTypeClass());
127-
beanFactory.registerResolvableDependency(informerType.resolve(), sharedIndexInformer);
133+
RootBeanDefinition informerBean = new RootBeanDefinition();
134+
informerBean.setTargetType(informerType);
135+
informerBean.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);
136+
informerBean.setAutowireCandidate(true);
137+
String informerBeanName = informerType.toString();
138+
this.beanDefinitionRegistry.registerBeanDefinition(informerBeanName, informerBean);
139+
beanFactory.registerSingleton(informerBeanName, sharedIndexInformer);
128140

129141
Lister lister = new Lister(sharedIndexInformer.getIndexer());
130142
ResolvableType listerType =
131143
ResolvableType.forClassWithGenerics(Lister.class, kubernetesInformer.apiTypeClass());
132-
beanFactory.registerResolvableDependency(listerType.resolve(), lister);
144+
RootBeanDefinition listerBean = new RootBeanDefinition();
145+
listerBean.setTargetType(listerType);
146+
listerBean.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);
147+
listerBean.setAutowireCandidate(true);
148+
String listerBeanName = listerType.toString();
149+
this.beanDefinitionRegistry.registerBeanDefinition(listerBeanName, listerBean);
150+
beanFactory.registerSingleton(listerBeanName, lister);
133151
}
134152
}
135153

136154
@Override
137155
public int getOrder() {
138156
return 0;
139157
}
158+
159+
@Override
160+
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)
161+
throws BeansException {
162+
this.beanDefinitionRegistry = registry;
163+
}
140164
}

0 commit comments

Comments
 (0)