zoukankan      html  css  js  c++  java
  • 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");
        }
    }
    
  • 相关阅读:
    我们是如何实现DevOps的
    cmp命令
    全排列II
    chown命令
    两个数组的交集II
    MVVM模式的理解
    chmod命令
    路径总和
    cat命令
    跳水板
  • 原文地址:https://www.cnblogs.com/yinchh/p/12749138.html
Copyright © 2011-2022 走看看