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");
        }
    }
    
  • 相关阅读:
    【算法】Manacher算法
    python 02 python入门知识
    python 01:计算机基础知识
    表示数值的字符串
    C++ 迭代器(STL迭代器)iterator详解
    构建乘积数组
    C++ 容器(STL容器)
    数组中重复的数字
    把字符串转换成整数
    十大经典排序算法
  • 原文地址:https://www.cnblogs.com/yinchh/p/12749138.html
Copyright © 2011-2022 走看看