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");
        }
    }
    
  • 相关阅读:
    任正非用人:砍掉高层手脚、中层屁股、基层脑袋、全身赘肉!
    SourceTree的基本使用
    Spring学习(三)
    Spring学习(二)
    Spring学习(一)
    SpringBoot学习(五)
    SpringBoot学习(四)
    SpringBoot学习(二)
    SpringBoot学习(三)
    SpringBoot学习(一)
  • 原文地址:https://www.cnblogs.com/yinchh/p/12749138.html
Copyright © 2011-2022 走看看