zoukankan      html  css  js  c++  java
  • ImportBeanDefinitionRegistrar灵活装载Bean

    FeignClientsRegistrar实现了ImportBeanDefinitionRegistrar,它是一个动态注入bean的接口,Spring Boot启动的时候,会去调用这个类中的registerBeanDefinitions来实现动态Bean的装载。
    它的作用类似于ImportSelector。

    class FeignClientsRegistrar implements ImportBeanDefinitionRegistrar, ResourceLoaderAware, EnvironmentAware {
          @Override
          public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {
                registerDefaultConfiguration(metadata, registry);
                registerFeignClients(metadata, registry);
          }
    }
    

    ImportBeanDefinitionRegistrar的作用

    • 定义一个需要被装载到IOC容器中的类HelloService
    public class HelloService {
    
    }
    
    • 定义一个Registrar的实现,定义一个bean,装载到IOC容器
    public class AutoLoadBean implements ImportBeanDefinitionRegistrar {
    
        @Override
        public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry, BeanNameGenerator importBeanNameGenerator) {
            BeanDefinition beanDefinition = new GenericBeanDefinition();
            beanDefinition.setBeanClassName(HelloService.class.getName());
            registry.registerBeanDefinition("helloService", beanDefinition);
        }
    }
    
    • 定义一个注解类
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    @Documented
    @Import(AutoLoadBean.class)
    public @interface EnableLoadBean {
    
    }
    
    • 测试类
    @Configuration
    @EnableLoadBean
    public class TestLoadBean {
    
        public static void main(String[] args) {
            ApplicationContext applicationContext = new AnnotationConfigApplicationContext(TestLoadBean.class);
            System.out.println(applicationContext.getBean(HelloService.class));
        }
    }
    
  • 相关阅读:
    OSGI .Net 框架学习
    ArcEngine开发过程中的空间关系
    ITOCControl添加鼠标右键菜单
    IHookHelper的使用
    ITopologicalOperator接口调用
    GeoProcessor的使用方法
    ArcEngine内置工具条
    OSGI.NET插件方式开发你的应用
    C#在linux上运行实现
    Linux 下随机启动自己的应用 -请使用while(true) 不要Console.ReadKey()
  • 原文地址:https://www.cnblogs.com/snail-gao/p/14096104.html
Copyright © 2011-2022 走看看