• 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

  • 相关阅读:
    掉瓶子小游戏
    arcgis js api 4.x通过TileLayer类加载arcgis server10.2发布的切片服务跨域问题的解决办法
    代码随想录算法训练营第八天|二叉树(截止到左叶子之和)
    Django Web框架的使用
    NVIDIA 安装 CUDA
    Linux 进程信号
    二叉树 | 迭代遍历 | leecode刷题笔记
    Android开发常见的报错问题(持续更新记录)
    Vue3+TypeScript学习
    fiddler的使用
  • 原文地址:https://blog.csdn.net/yanjianpeng_2018/article/details/126952889