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));
        }
    }
    
  • 相关阅读:
    Linq 入门 顺带 Func与Action
    关于asp.net 的一些好资料地址 , 防止丢失!
    Sql日期时间格式转换 备用
    自己动手写 ASP.NET MVC 分页 part1
    怎么做好一个美食排行榜的用户投票功能?
    「要买车网」免费获取汽车电商要买车网购车优惠券
    MVC Ajax Form & Ajax Valida(笔记)
    C# 序列化高级用法
    我与葡萄城的故事
    生成分布式随机ID
  • 原文地址:https://www.cnblogs.com/snail-gao/p/14096104.html
Copyright © 2011-2022 走看看