• SpringBoot粗浅分析


    应用分析

    1、依赖管理机制

    在springBoot项目中,导入starter-web所有想换依赖都会被导入,甚至不用去规定它们的版本号。它是根据Maven的依赖传递原则来设置,只需要导入场景启动器,场景启动器自动把这个场景的所有核心依赖全部导入。不去规定版本号的原因是:每个springBoot都有一个父项目spring-boot-starter-parent,parent的父项目spring-boot-dependencies在其中声明了所有常见的jar包的依赖版本,如果想要自定义版本号,我们可以利用maven的就近原则,直接在当前项目添加properties标签,在其中声明父项目版本属性的key,或直接在依赖内添加version标签。

    2、自动配置机制(初步理解)

    ①自动配置Tomcat、SpringMVC等

    导入场景,容器中就会自动配置好这个场景的核心组件。

    • 以前:DispatcherServlet、ViewResolver、CharacterEncodingFilter…
    • 现在:自动配置完整

    查看容器中有什么组件。

    package com.louis;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class Boot302Application {
    
    	public static void main(String[] args) {
    		//java10:局部变量类型的自动推断
    		var ioc = SpringApplication.run(Boot302Application.class, args);
    		//1、获取容器中所有组件的名字
    		String[] names = ioc.getBeanDefinitionNames();
    		//2、遍历数组内容
    		for (String name : names) {
    			System.out.println(name);
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

    ②默认的包扫描规则

    SpringBoot只会扫描主程序所在的包及其下面的子包,自动的component-scan功能。也可以自定义扫描路径:

    • 法一:设置@SpringBootApplication的scanBasePackage属性设置,如:

      @SpringBootApplication(scanBasePackages = "com")
      
      • 1
    • 法二:观察@SpringBootApplication注解发现它是一个复合注解,可以使用@ComponentScan("com")注解设置扫描路径。

    在这里插入图片描述

    ③配置默认值

    配置文件的所有配置项是和某个类的对象值进行一一绑定的。

    绑定了配置文件中每一项的类就叫做配置属性类。如:ServerProperties绑定了所有Tomcat服务器有关的配置、MultipartProperties绑定了所有与文件上传相关的配置…

    ④按需加载自动配置

    场景启动器除了会导入相关功能依赖外,还会导入spring-boot-starter,它是基础核心starter,是所有starter的starter,在其中又导入了一个包spring-boot-autoconfigure里面都是各种场景的autoconfigure自动配置类,用来实现自动配置,虽然都在这个包中,但并不是全部都开启的。只有在导入了相关场景时才会开启相关自动配置。

    总结:导入场景启动器,触发apring-boot-autoconfigure这个包的自动配置生效,容器中就会具有相关场景的功能。

  • 相关阅读:
    Java如何替换视频背景音乐
    MyBatis实验(三)——动态SQL
    ES、kibana、JavaClient详细安装及操作
    自学SLAM(4)《第二讲:三维物体刚体运动》作业
    python科研绘图:绘制X-bar图
    【小程序项目开发--京东商城】uni-app之自定义搜索组件(上)-- 组件UI
    第15章、 友元、异常和其他
    C++开源网络库casablanca_cppRestSdk入门环境及使用示例
    【数据代理+事件处理+计算属性与监视+绑定样式+条件渲染】
    《棒球英豪》:青春球场·棒球1号位
  • 原文地址:https://blog.csdn.net/xry12354/article/details/132746835