为了账号安全,请及时绑定邮箱和手机立即绑定

@Import 注解

标签:
Cocos2d-x

@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

结果


webp

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 {

}

测试代码不变,直接看结果


webp

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 这个组件


webp

PERSON 成功注册



作者:宿命99
链接:https://www.jianshu.com/p/afd2c49394c2


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消