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 成功注册
  • 相关阅读:
    php解决与处理网站高并发 大流量访问的方法
    mysql事务和锁InnoDB
    从一个死锁看mysql innodb的锁机制
    Git如何删除自己创建的项目
    公众号的坑
    字符串转Unicode码
    字符串转UTF-8码(%开头)
    git介绍和使用
    ng2中文文档地址
    两个数组的排序方法
  • 原文地址:https://www.cnblogs.com/itplay/p/10660231.html
Copyright © 2011-2022 走看看