zoukankan      html  css  js  c++  java
  • 如何使用@import导入实现了ImportBeanDefinitionRegistrar接口的类?

    如何使用@import导入实现了ImportBeanDefinitionRegistrar接口的类

     

    在程序开发的时候,我们经常会遇见一个名词“接口”这也是我们做开发人员工作中必不可少的一个技术,接下来就和大家分享一下怎么使用@import导入实现了ImportBeanDefinitionRegistrar接口的类。

     

    package com.example.demo9;

    import com.example.demo9.server.MyServer;

    import org.springframework.boot.SpringApplication;

    import org.springframework.boot.autoconfigure.SpringBootApplication;

    import org.springframework.context.ConfigurableApplicationContext;

    import java.util.Arrays;

    @SpringBootApplication

    public class Demo9Application {

        public static void main(String[] args) {

            ConfigurableApplicationContext context = SpringApplication.run(Demo9Application.class, args);

            String[] beanNamesForType = context.getBeanNamesForType(MyServer.class);

            System.out.println(Arrays.asList(beanNamesForType).toString());

            context.close();

        }

    }

    public interface MyServer {

        void fun();

    }

    package com.example.demo9.server;

    //这里最好不要加@Service,除非有其它要求

    public class MyServerAImp implements MyServer{

        @Override

        public void fun() {

            System.out.println("MyServerAImp>>>>>>>>>>>>>>");

        }

    }

    package com.example.demo9.server;

    //这里最好不要加@Service,除非有其它要求

    public class MyServerBImp implements MyServer{

        @Override

        public void fun() {

            System.out.println("MyServerBImp>>>>>>>>>>>>>>");

        }

    }

    package com.example.demo9.registrar;

    import com.example.demo9.server.MyServerAImp;

    import com.example.demo9.server.MyServerBImp;

    import org.springframework.beans.factory.support.BeanDefinitionRegistry;

    import org.springframework.beans.factory.support.GenericBeanDefinition;

    import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;

    import org.springframework.core.type.AnnotationMetadata;

    public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {

        @Override

        public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {

            //GenericBeanDefinition对象设置BeanDefinition

            GenericBeanDefinition genericBeanDefinitionMyServerAImp=new GenericBeanDefinition();

            genericBeanDefinitionMyServerAImp.setBeanClass(MyServerAImp.class);

            GenericBeanDefinition genericBeanDefinitionMyServerBImp=new GenericBeanDefinition();

            genericBeanDefinitionMyServerBImp.setBeanClass(MyServerBImp.class);

            //注册

            registry.registerBeanDefinition("genericBeanDefinitionMyServerAImp",genericBeanDefinitionMyServerAImp);

            registry.registerBeanDefinition("genericBeanDefinitionMyServerBImp",genericBeanDefinitionMyServerBImp);

        }

    }

    package com.example.demo9.configuration;

    import com.example.demo9.registrar.MyImportBeanDefinitionRegistrar;

    import org.springframework.context.annotation.Configuration;

    import org.springframework.context.annotation.Import;

    @Configuration

    @Import(MyImportBeanDefinitionRegistrar.class)

    public class MyConfiguration {

    }

  • 相关阅读:
    python之天气爬虫
    python之一异常问题(TypeError: object of type 'NoneType' has no len())
    数据分析之漏斗分析
    python之pytest_addoption : 命令行参数
    python之一driver.find_element_by_xpath与driver.find_element(by, value)的区别
    python之正则表达式从列表中取值报类型错误
    python之append和extend的区别
    pyton之字典的使用
    python之pd.DataFrame函数使用
    python之正则表达式 re.findall 用法
  • 原文地址:https://www.cnblogs.com/QQ12538552/p/12395761.html
Copyright © 2011-2022 走看看