• spring import用法


    @import注解的主要作用是将类注入到spring的上下文中去

    用法1在加了@Configuration注解的配置类中使用

    1. //配置类,将被其他配置类引用
    2. @Configuration
    3. public class MybatisConfig {
    4. }
    1. //引用MybatisConfig配置类
    2. @Configuration
    3. @Import(value = {MybatisConfig.class})
    4. public class JavaConfig {
    5. public static void main(String[] args) {
    6. ApplicationContext ac = new AnnotationConfigApplicationContext(JavaConfig.class);
    7. for (String str :ac.getBeanDefinitionNames()) {
    8. System.out.println(str);
    9. }
    10. }
    11. }

    运行结果 

    javaConfig
    com.test.config.MybatisConfig 

     用法2实现ImportSelector接口的类

    1. //实现ImportSelector接口,并可以加条件判断是否要注入spring
    2. public class Test implements ImportSelector {
    3. @Override
    4. public String[] selectImports(AnnotationMetadata annotationMetadata) {
    5. String[] strings = new String[1];
    6. if (1==1){
    7. strings[0] = Ab.class.getName();
    8. }
    9. return strings;
    10. }
    11. }
    1. //将上边的Test类加入
    2. @Configuration
    3. @Import(value = {MybatisConfig.class,Test.class})
    4. public class JavaConfig {
    5. public static void main(String[] args) {
    6. ApplicationContext ac = new AnnotationConfigApplicationContext(JavaConfig.class);
    7. for (String str :ac.getBeanDefinitionNames()) {
    8. System.out.println(str);
    9. }
    10. }
    11. }

    观察结果,Ab类也注入了spring环境中

    javaConfig
    com.test.config.MybatisConfig
    com.test.config.Ab

    用法3实现 ImportBeanDefinitionRegistrar接口,自己定义beanDefininition

    1. //实现ImportBeanDefinitionRegistrar,在BeanDefinitionRegistry中加入BeanDefinition
    2. public class Test1 implements ImportBeanDefinitionRegistrar {
    3. @Override
    4. public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
    5. // 注册dog的bean定义,其中beanName为dogBean
    6. RootBeanDefinition rbd = new RootBeanDefinition(Ab.class);
    7. registry.registerBeanDefinition("ab",rbd);
    8. }
    9. }
    1. //加入Test1
    2. @Configuration
    3. @Import(value = {MybatisConfig.class, Test1.class})
    4. public class JavaConfig {
    5. public static void main(String[] args) {
    6. ApplicationContext ac = new AnnotationConfigApplicationContext(JavaConfig.class);
    7. for (String str : ac.getBeanDefinitionNames()) {
    8. System.out.println(str);
    9. }
    10. }
    11. }

    观察结果发现ab同样注入到spring中了

    javaConfig
    com.test.config.MybatisConfig
    ab

    用法4普通类

    1. //将Ab类加入
    2. @Configuration
    3. @Import(value = {MybatisConfig.class, Ab.class})
    4. public class JavaConfig {
    5. public static void main(String[] args) {
    6. ApplicationContext ac = new AnnotationConfigApplicationContext(JavaConfig.class);
    7. for (String str : ac.getBeanDefinitionNames()) {
    8. System.out.println(str);
    9. }
    10. }
    11. }

     观察结果Ab类同样注入到spring中了

    javaConfig
    com.test.config.MybatisConfig
    com.test.config.Ab

  • 相关阅读:
    Debian12 中重新安装MSSQL 并指定服务器、数据库、数据表字段的字符排序规则和默认语言等参数
    3、flex弹性盒布局(flex:1?、水平垂直居中、三栏布局)
    Zookeeper安装部署
    【CSDN|每日一练】求最小元素
    JAVA基础一些问题总结
    SQL 如何提取多级分类目录
    MySQL - 全文索引
    RabbitMQ相关概念
    笔试时C++的输入输出汇总
    接口测试与功能测试的区别~
  • 原文地址:https://blog.csdn.net/yanjianpeng_2018/article/details/126952889