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));
        }
    }
    
  • 相关阅读:
    广大数据结构复习之顺序表
    vs2017编译器编写c语言代码函数安全问题
    大数据学习之Spark Streaming进阶 52
    大数据学习之Spark Streaming基础 52
    大数据学习之SparkSQL数据源 51
    本地eclipse idea 写的Hadoop的API和 spark程序不能访问云服务器中的数据
    大数据学习之SparkSQL 50
    【PHP】上传图片翻转问题
    【Linux】CentOS7 安装gdb
    【Linux】yum [Errno 14] HTTP Error 404
  • 原文地址:https://www.cnblogs.com/snail-gao/p/14096104.html
Copyright © 2011-2022 走看看