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 成功注册
  • 相关阅读:
    Ms.office2010安装教程
    Hadoop开发第3期---Hadoop的伪分布式安装
    Linux随笔---tar命令
    Hadoop开发第2期---虚拟机中搭建Linux
    appium(8)-locator strategies
    appium(7)-Automating mobile gestures
    appium(3)-Running Tests
    appium(4)-Automating mobile web apps
    appium(5)-Appium capabilities
    appium(2)-Setting up Appium
  • 原文地址:https://www.cnblogs.com/itplay/p/10660231.html
Copyright © 2011-2022 走看看