• springboot自动装配原理


    springboot核心是自动装配

    spring ioc的升级过程

    1. xml方式
    2. 注解方式
    3. javaconfig方式
    4. springboot提供的自动装配

    springboot自动装配的核心

    1. EnableAutoConfiguration
    2. @Import(AutoConfigurationImportSelector.class)
    3. ImportSelector.selectImports
    4. META-INF/spring.factories
      ImportSelector.selectImports返回的就是javaconfig类,再根据Condition筛选后,决定是否执行注入
      官方提供的自动装配配置在spring-boot-autoconfigure中的META-INF/spring.factories中,如spring-boot-starter-data-redis
      非官方需要自己提供spring.factories,如mybatis-spring-boot-autoconfigure中定义了META-INF/spring.factories

    通过继承ImportSelector.selectImports实现spring注入

    @SpringBootApplication
    @EnableSelectImportService
    public class SelectImportApp {
        public static void main(String[] args) {
            ConfigurableApplicationContext context = SpringApplication.run(SelectImportApp.class);
            SelectImportService service = context.getBean(SelectImportService.class);
            service.hello();
        }
    }
    
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @Import(MySelectImport.class)
    public @interface EnableSelectImportService {
    }
    
    public class MySelectImport implements ImportSelector {
        @Override
        public String[] selectImports(AnnotationMetadata importingClassMetadata) {
            return new String[]{SelectImportService.class.getName()};
        }
    }
    
    public class SelectImportService {
        public void hello(){
            System.out.println("hello selectimport");
        }
    }
    
  • 相关阅读:
    PIE SDK介绍
    PIE软件介绍
    PIE SDK与Python结合说明文档
    转载博客(Django2.0集成xadmin管理后台遇到的错误)
    python+django学习二
    python+django学习一
    HTML练习二--动态加载轮播图片
    HTML练习一
    LeetCode 999. 车的可用捕获量
    LeetCode 892. 三维形体的表面积
  • 原文地址:https://www.cnblogs.com/yinchh/p/12749138.html
Copyright © 2020-2023  润新知