zoukankan      html  css  js  c++  java
  • 注解-组件注册04-@Import

      目前注册组件的方式有:

    注册组件:
    1)包扫描+组件标注注解(@Controller @Service @Repository @Component)
    2)@Bean[导入的第三方包里的组件]

       下面来说第三种方式@Import:

    @Import[快速给容器中导入一个组件]
    1)@Import(要导入到容器中的组件),容器中就会自动注册这个组件,id默认是全类名
    2)ImportSelector:返回需要导入的组建的全类名数组
    3)ImportBeanDefinitionRegistrar:手动注册bean到容器中
    @Configuration
    //Red Color Blue Yellow RainBow均为被注解修饰 @Import({ Red.
    class, MyImportSelector.class, MyImportBeanRegister.class}) public class MainConfig2 { /** * 注册组件: * 1)包扫描+组件标注注解(@Controller @Service @Repository @Component) * 2)@Bean[导入的第三方包里的组件] * 3)@Import[快速给容器中导入一个组件] * 1)@Import(要导入到容器中的组件),容器中就会自动注册这个组件,id默认是全类名 * 2)ImportSelector:返回需要导入的组建的全类名数组 * 3)ImportBeanDefinitionRegistrar:手动注册bean到容器中 */ }
    public class MyImportSelector implements ImportSelector {
        //返回值就是导入到容器中的组件类全类名
        //AnnotationMetadata:当前标注@Import注解的类的所有注解信息
        @Override
        public String[] selectImports(AnnotationMetadata annotationMetadata) {
            return new String[]{"Yellow","Blue"};
        }
    }
    public class MyImportBeanRegister implements ImportBeanDefinitionRegistrar {
        /**
         * @param annotationMetadata 当前类的注解信息
         * @param registry BeanDefinition注册类,把所有需要添加到容器中的bean,
         *                               调用BeanDefinitionRegistry.registerBeanDefinition()手工注册进来
         */
        @Override
        public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry registry) {
            boolean red = registry.containsBeanDefinition("Red");
            boolean blue = registry.containsBeanDefinition("Blue");
            if(red && blue){
                RootBeanDefinition beanDefinition = new RootBeanDefinition(RainBow.class);
                registry.registerBeanDefinition("rainBow",beanDefinition);
            }
        }
    }
  • 相关阅读:
    爬虫技术浅析 | WooYun知识库
    爬虫技术实战 | WooYun知识库
    爬虫技术实战 | WooYun知识库
    Day 16: Goose Extractor —— 好用的文章提取工具
    mysql中间件研究(Atlas,cobar,TDDL)
    cygwin with openssh
    win2008 ent r2 开启端口
    MobaSSH SSH server for Windows
    自动化运维工具Ansible详细部署
    中科院NLPIR中文分词java版
  • 原文地址:https://www.cnblogs.com/qmillet/p/13084065.html
Copyright © 2011-2022 走看看