类导入(@Import)

David 2022-09-28 23:15:44
Categories: Tags:

​​​​​​​

 

参数

描述

value

指定导入的类class,默认为{},即当前类

 

 

 

 

class数组方式

示例

@Data

public class TestA {

    private String name = "TestA";

 

    public void print(){

        System.out.println(this.toString());

    }

}

 

@Data

public class TestB {

    private String name = "TestB";

 

    public void print(){

        System.out.println(this.toString());

    }

}

 

@Import({TestA.class, TestB.class})

@Configuration

public class ImportConfig {

}

 

 

 

ImportSelector 接口实现方式

示例

@Data

public class TestC {

    private String name = "TestC";

 

    public void print(){

        System.out.println(this.toString());

    }

}

 

public class TestImportSelector implements ImportSelector {

    @Override

    public String[] selectImports(AnnotationMetadata annotationMetadata) {

        return new String[]{"com.xmotor.test_import_annotation.model.TestC"};

    }

}

 

@Import({TestImportSelecto.class})

@Configuration

public class ImportConfig {

}

 

 

 

ImportBeanDefinitionRegistrar 接口实现方式

 

示例

@Data

public class TestD {

    private String name = "TestD";

 

    public void print(){

        System.out.println(this.toString());

    }

}

 

public class TestImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {

    @Override

    public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry registry) {

        RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(TestD.class);

        registry.registerBeanDefinition("testD1111",rootBeanDefinition);//自定义注册bean

    }

}

 

@Import({TestImportBeanDefinitionRegistrar.class})

@Configuration

public class ImportConfig {

}