zoukankan      html  css  js  c++  java
  • Spring将Bean导入IOC容器

    @Import 注解可以普通类导入到 IoC容器中。

    想要让一个普通类接受 Spring 容器管理,有以下方法

    • 使用 @Bean 注解
    • 使用 @Controller @Service @Repository @Component 注解标注该类,然后再使用 @ComponentScan 扫描包
    • @Import 方法,即现在这种方式

    Student 类

    public class Student {
    }

    配置类

    @Configuration
    @Import(Student.class)
    public class ImportConfig {
    
    }

    测试代码

        @Test
        public void test7() {
            ApplicationContext ctx = new AnnotationConfigApplicationContext(ImportConfig.class);
            String[] beanDefinitionNames = ctx.getBeanDefinitionNames();
            for (String name : beanDefinitionNames) {
                System.out.println(name);
            }
        }
    

      

    观察有没有 Student 产生的 bean

    结果


     
    bean成功创建

    以上导入普通的 Java 并将其声明为一个 bean 功能在 4.2 之后才可以使用在 spring 4.2 以前,该注解,只能导入配置类,其功能与 <import /> 标签类似


    ImportSelector

    ImportSelector : 返回需要导入的组件的全类名数组

    MySelector 类

    public class MySelector implements ImportSelector {
        public String[] selectImports(AnnotationMetadata importingClassMetadata) {
            return new String[]{"me.sjl.bean.Person"};
        }
    }
    

      

    配置类

    @Configuration
    @Import(MySelector.class)
    public class ImportConfig {
    
    }
    

      

    测试代码不变,直接看结果


     
    Person 类被加载

    ImportBeanDefinitionRegistrar

    BeanDefinitionRegistrar

    public class MyBeanDefinitionRegistrat implements ImportBeanDefinitionRegistrar {
        
        @Override
        public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
            BeanDefinition beanDefinition = new RootBeanDefinition(Person.class);
            registry.registerBeanDefinition("PERSON", beanDefinition);
        }
    }
    

      

    配置类

    @Configuration
    @Import(MyBeanDefinitionRegistrat.class)
    public class ImportConfig {
    
    }
    

      

    测试代码不变,直接看结果,看看是否有 PERSON 这个组件


     
    PERSON 成功注册
  • 相关阅读:
    解决英文版Windows中软件乱码问题
    退出程序时进行确认提醒
    Dreamweaver插件,FireFox插件名称集合
    网页炸弹根本就不算技术
    虚拟格式化硬盘
    当前上下文中不存在名称“Server”的原因
    ASP脚本在Webshell下的安全解决方案
    ASP.NET关于http/1.1 500 Server Error 的解决办法
    在网页文件中插入QQ强制聊天
    删除visual studio最近打开的项目列表
  • 原文地址:https://www.cnblogs.com/itplay/p/10660231.html
Copyright © 2011-2022 走看看