• 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

  • 相关阅读:
    Mysql.索引存储结构演进
    Python预测2022世界杯1/8决赛胜负
    Tracing Analysis Solution
    企业侧功能
    学习笔记:吴恩达ChatGPT提示工程
    SpringCloud OpenFeign
    获取sku详细信息 API 返回值说明
    Asante Capital Group加强在亚洲的战略重点
    java计算机毕业设计ssm党支部在线学习系统
    GPT到底要砸掉多少打工人的饭碗?
  • 原文地址:https://blog.csdn.net/yanjianpeng_2018/article/details/126952889