zoukankan      html  css  js  c++  java
  • 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)

       

      

     

      

  • 相关阅读:
    VTK初学一,b_PolyVertex多个图形点的绘制
    VTK初学一,a_Vertex图形点的绘制
    Python基础学习之集合
    Apache
    NTP时间同步服务和DNS服务
    NFS服务及DHCPD服务
    samba服务及vsftpd服务
    Linux rpm和yum软件管理
    Linux网络技术管理及进程管理
    Linux RAID磁盘阵列
  • 原文地址:https://www.cnblogs.com/CL-King/p/14032587.html
Copyright © 2011-2022 走看看