2121import io .kubernetes .client .spring .extended .controller .annotation .KubernetesInformer ;
2222import io .kubernetes .client .spring .extended .controller .annotation .KubernetesInformers ;
2323import io .kubernetes .client .spring .extended .controller .config .KubernetesInformerProperties ;
24- import io .kubernetes .client .spring .extended .controller .factory .KubernetesControllerFactory ;
2524import io .kubernetes .client .util .generic .GenericKubernetesApi ;
2625import org .slf4j .Logger ;
2726import org .slf4j .LoggerFactory ;
2827import org .springframework .beans .BeansException ;
2928import org .springframework .beans .factory .BeanFactory ;
29+ import org .springframework .beans .factory .BeanFactoryAware ;
3030import org .springframework .beans .factory .annotation .Autowired ;
3131import org .springframework .beans .factory .config .ConfigurableListableBeanFactory ;
3232import org .springframework .beans .factory .support .BeanDefinitionBuilder ;
4646 * injects informers to spring context with the underlying constructing process hidden from users.
4747 */
4848public class KubernetesInformerFactoryProcessor
49- implements BeanDefinitionRegistryPostProcessor , Ordered {
49+ implements BeanDefinitionRegistryPostProcessor , BeanFactoryAware , Ordered {
5050
51- public static final int ORDER = 0 ;
51+ private static final Logger log =
52+ LoggerFactory .getLogger (KubernetesInformerFactoryProcessor .class );
5253
53- private static final Logger log = LoggerFactory . getLogger ( KubernetesControllerFactory . class ) ;
54+ public static final int ORDER = 0 ;
5455
5556 @ Autowired private KubernetesInformerProperties informerProperties ;
5657
5758 private ConfigurableListableBeanFactory beanFactory ;
5859
5960 @ Override
6061 public void postProcessBeanFactory (ConfigurableListableBeanFactory beanFactory )
61- throws BeansException {
62- this .beanFactory = beanFactory ;
63- }
62+ throws BeansException {}
6463
6564 @ Override
6665 public int getOrder () {
@@ -74,15 +73,22 @@ public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)
7473 return ;
7574 }
7675 for (String name : registry .getBeanDefinitionNames ()) {
76+ KubernetesInformers kubernetesInformers = null ;
7777 Class <?> cls = ((BeanFactory ) registry ).getType (name );
7878 if (cls != null ) {
79- KubernetesInformers kubernetesInformers =
79+ kubernetesInformers =
8080 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 );
8692 }
8793 }
8894 }
@@ -160,4 +166,9 @@ private <T extends KubernetesObject> SharedInformer<T> informer(
160166 api , type , kubernetesInformer .resyncPeriodMillis (), kubernetesInformer .namespace ());
161167 return sharedIndexInformer ;
162168 }
169+
170+ @ Override
171+ public void setBeanFactory (BeanFactory beanFactory ) throws BeansException {
172+ this .beanFactory = (ConfigurableListableBeanFactory ) beanFactory ;
173+ }
163174}
0 commit comments