Spring @import理解

@Import 注解可以普通类导入到 IoC容器中。其中支持三种导入方式

  • 直接导入类
  • ImportSelector
  • ImportBeanDefinitionRegistrar
    下面分别以例子程序的方式来展示其用法

测试工程

package com.example.demo;

public class DemoApplication {

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

直接导入类

public class Student {
}

配置类的写法
@Configuration
@Import(Student.class)
public class ImportConfig {
}
备注:一定需要加入配置类

ImportSelector

public class MySelector implements ImportSelector {
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        return new String[]{"com.example.demo.Student"};
    }
}

配置类的写法
@Configuration
@Import(MySelector.class)
public class ImportConfig {

}

ImportBeanDefinitionRegistrar

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

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

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。