21
21
import io .kubernetes .client .spring .extended .controller .annotation .KubernetesInformer ;
22
22
import io .kubernetes .client .spring .extended .controller .annotation .KubernetesInformers ;
23
23
import io .kubernetes .client .spring .extended .controller .config .KubernetesInformerProperties ;
24
- import io .kubernetes .client .spring .extended .controller .factory .KubernetesControllerFactory ;
25
24
import io .kubernetes .client .util .generic .GenericKubernetesApi ;
26
25
import org .slf4j .Logger ;
27
26
import org .slf4j .LoggerFactory ;
28
27
import org .springframework .beans .BeansException ;
29
28
import org .springframework .beans .factory .BeanFactory ;
29
+ import org .springframework .beans .factory .BeanFactoryAware ;
30
30
import org .springframework .beans .factory .annotation .Autowired ;
31
31
import org .springframework .beans .factory .config .ConfigurableListableBeanFactory ;
32
32
import org .springframework .beans .factory .support .BeanDefinitionBuilder ;
46
46
* injects informers to spring context with the underlying constructing process hidden from users.
47
47
*/
48
48
public class KubernetesInformerFactoryProcessor
49
- implements BeanDefinitionRegistryPostProcessor , Ordered {
49
+ implements BeanDefinitionRegistryPostProcessor , BeanFactoryAware , Ordered {
50
50
51
- public static final int ORDER = 0 ;
51
+ private static final Logger log =
52
+ LoggerFactory .getLogger (KubernetesInformerFactoryProcessor .class );
52
53
53
- private static final Logger log = LoggerFactory . getLogger ( KubernetesControllerFactory . class ) ;
54
+ public static final int ORDER = 0 ;
54
55
55
56
@ Autowired private KubernetesInformerProperties informerProperties ;
56
57
57
58
private ConfigurableListableBeanFactory beanFactory ;
58
59
59
60
@ Override
60
61
public void postProcessBeanFactory (ConfigurableListableBeanFactory beanFactory )
61
- throws BeansException {
62
- this .beanFactory = beanFactory ;
63
- }
62
+ throws BeansException {}
64
63
65
64
@ Override
66
65
public int getOrder () {
@@ -74,15 +73,22 @@ public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)
74
73
return ;
75
74
}
76
75
for (String name : registry .getBeanDefinitionNames ()) {
76
+ KubernetesInformers kubernetesInformers = null ;
77
77
Class <?> cls = ((BeanFactory ) registry ).getType (name );
78
78
if (cls != null ) {
79
- KubernetesInformers kubernetesInformers =
79
+ kubernetesInformers =
80
80
AnnotatedElementUtils .getMergedAnnotation (cls , KubernetesInformers .class );
81
- if (kubernetesInformers != null && kubernetesInformers .value ().length > 0 ) {
82
- for (KubernetesInformer kubernetesInformer : kubernetesInformers .value ()) {
83
- registerInformer (registry , kubernetesInformer );
84
- registerLister (registry , kubernetesInformer );
85
- }
81
+ }
82
+ if (kubernetesInformers == null ) {
83
+ kubernetesInformers = beanFactory .findAnnotationOnBean (name , KubernetesInformers .class );
84
+ }
85
+ if (kubernetesInformers == null ) {
86
+ continue ;
87
+ }
88
+ if (kubernetesInformers .value ().length > 0 ) {
89
+ for (KubernetesInformer kubernetesInformer : kubernetesInformers .value ()) {
90
+ registerInformer (registry , kubernetesInformer );
91
+ registerLister (registry , kubernetesInformer );
86
92
}
87
93
}
88
94
}
@@ -160,4 +166,9 @@ private <T extends KubernetesObject> SharedInformer<T> informer(
160
166
api , type , kubernetesInformer .resyncPeriodMillis (), kubernetesInformer .namespace ());
161
167
return sharedIndexInformer ;
162
168
}
169
+
170
+ @ Override
171
+ public void setBeanFactory (BeanFactory beanFactory ) throws BeansException {
172
+ this .beanFactory = (ConfigurableListableBeanFactory ) beanFactory ;
173
+ }
163
174
}
0 commit comments