springboot原理探寻,自动装配

前言:1,springboot的pom中是一个父子项目(partents标签),内部封装大量依赖,也就是核心依赖在父工程中

   2,资源过滤等常见配置springboot都已经配置好并封装了,开发人员不在需要去关心配置问题

   3,在引入SpringBoot依赖时页不在需要指定版本了,以为内部封装了版本仓库

    

一,启动器

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

 SpringBoot的启动场景

 比如:spring-boot-statter-web,他就会自动帮我们导入web环境的所有依赖

 springboot会将所有的功能场景,封装变成一个个 的启动器

 要使用时,仅需找到对应的启动器就可以了

那么如何去找启动器呢?

网址:https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter

二,原理探寻

//@SpringBootApplication,标注这个类是一个springboot的应用
@SpringBootApplication
public class Springboot01HelloworldApplication {

    public static void main(String[] args) {
        //将springboot应用启动
        SpringApplication.run(Springboot01HelloworldApplication.class, args);
    }

}

点击注解探寻源码

@SpringBootConfiguration  :springboot的配置
           @Configuration: spring的配置类
           @Component:说明这是一个spring的组件

@EnableAutoConfiguration :自动配置
           @AutoConfigurationPackage:自动配置包
            @Import({Registrar.class})
    public @interface AutoConfigurationPackage {   :导入选择器 

 上图(看完图后去找对应源码!)

总结:1.这个启动类的注解的3个主分支分别作用:标注主类时spring类、标注spring容器要扫描的包即要纳入spring管理的全部类包、加载所有实现自动装配的配置类

    2.springboot的自动配置都是在启动的时候扫描和加载:spring.factories所有的自动配置类都在这里面,但不一定生效,需通过判断条件是否成立。只要导入对应的start,就有了相应的启动器,相应的自动配置就会生效。配置成功!

步骤:

  1.SpringBoot在启动时,从类路径“/META-INF/spring.factories”中获取指定的值(找到相应的自动的类的信息)

  2.将这些自动配置类导入spring容器,自动配置就会生效,帮开发人员自动配置

  3.以前需开放人源去自己手动配置(俗称:配置地狱),现在springboot帮我吗做了

  4.整合javaEE,解决方案和自动配置的东西都在autospring-boot-autoconfigure-2.4.0.jar这个包下

  5.它会把说有需要导入的组件一全类名的方式返回,这些组件就会被加到spring容器中

  6.容器中会有很多xxxautoconfiguration的组件(@Bean),他们构建一个自动装配的环境

  7.所以说自动装配是springboot的核心,注解是实现自动装配的核心

 javaConfig:@Configuration;配置    @Bean对象

Docker:进程

扩展问题:谈一谈对springBoot的理解

  两个方面

    1.自动装配:怎么实现的,过程

    2.run():判断他是普通项目还是web项目,(如果是一个web项目他会一直启动,如果他是一个普通项目他就直接结束)
         推断当前的主类,(因为不知道主类的话是没有办法加载的)

            run()中有一些监听器(全局存在的,获取上下文,处理bean)

 

总结:自动装配原理(重要)

  springboot启动时会加载大量启动类,

  springboot默认有大部分的配置文件,自动装配依赖就是靠这个文件(配置文件路径spring-boot-autoconfigure-2.4.0.jar/META-INF/spring-factories)

  当需要配置类时(依赖),就到这个文件里找,如果有就就不需要手动配置,仅需给这个依赖加一个启动器

  XXXAutoConfiguration:自动配置类,给容器中添加组件

  XXXProperties:封装配置文件中的相关属性 (application.properties,application.yaml)

   

  

 

  

原文地址:https://www.cnblogs.com/CL-King/p/14032587.html