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);}}
}

在这里插入图片描述

②默认的包扫描规则

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

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

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

在这里插入图片描述

③配置默认值

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

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

④按需加载自动配置

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/101879.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

广东成人高考报名将于9月14日开始!

截图来自广东省教育考试院官网* 今年的广东成人高考正式报名时间终于确定了! 报名时间:2023年 9 月14—20日 准考证打印时间:考前一周左右 考试时间:2023年10月21—22日 录取时间:2023年12 月中上旬 报名条件: …

Android 状态栏显示运营商名称

Android 原生设计中在锁屏界面会显示运营商名称,用户界面中,大概是基于 icon 数量长度显示考虑,对运营商名称不作显示。但是国内基本都加上运营商名称。对图标显示长度优化基本都是:缩小运营商字体、限制字数长度、信号图标压缩上…

FPGA实战小项目2

基于FPGA的贪吃蛇游戏 基于FPGA的贪吃蛇游戏 基于fpga的数字密码锁ego1 基于fpga的数字密码锁ego1 基于fpga的数字时钟 basys3 基于fpga的数字时钟 basys3

磁盘分析 wiztree[win32] baobab[linux]

磁盘分析 wiztree[win32] && baobab[linux] wiztree[win32]baobab 又叫 Disk Usage Analyzer[linux]安装使用 参考 wiztree[win32] baobab 又叫 Disk Usage Analyzer[linux] baobab 又叫 Disk Usage Analyzer,是 Ubuntu 系统默认自带的磁盘分析工具&#x…

WebGIS外包开发流程

WebGIS开发流程需要综合考虑前端和后端开发、地理信息数据处理、用户需求和安全性等多个方面。成功的WebGIS应用程序需要不断地进行更新和维护,以适应变化的需求和技术。WebGIS开发是一个复杂的过程,通常包括以下主要步骤。北京木奇移动技术有限公司&…

C++项目实战——基于多设计模式下的同步异步日志系统-①-项目介绍

文章目录 专栏导读项目介绍开发环境核心技术环境搭建日志系统介绍1.为什么需要日志系统2.日志系统技术实现2.1同步写日志2.2异步写日志 专栏导读 🌸作者简介:花想云 ,在读本科生一枚,C/C领域新星创作者,新星计划导师&a…

java+ssm+mysql电梯管理系统

项目介绍: 使用javassmmysql开发的电梯管理系统,系统包含管理员,监管员、安全员、维保员角色,功能如下: 管理员:系统用户管理(监管员、安全员、维保员);系统公告&#…

Java测试(10)--- selenium

1.定位一组元素 (1)如何打开本地的HTML页面 拼成一个URL :file: /// 文件的绝对路径 import os os.path.abspath(文件的绝对路径) (2)先定位出同一类元素(tag name,name&…

【Linux】LVM原理及核心概念

LVM是什么?LVM核心概念LVM的优势在Linux上使用LVM感谢 💖 LVM是什么? LVM是一种高级的磁盘管理工具,用于在Linux和其他类Unix操作系统中管理磁盘存储。它的核心思想是将底层物理存储抽象为逻辑存储单元,从而提供了更大…

Web安全研究(四)

No Honor Among Thieves: A Large-Scale Analysis of Malicious Web Shells Stony Brook University Ruhr-University Bochum Web shell作为恶意脚本,攻击者将其上传到被攻陷的Web服务器,以远程执行任意命令、维护其访问权限并提升其特权。尽管在实践中它…

DHCP的interface(接口),global(全局)配置以及DHCP relay(中继),DHCP snooping,DHCP option

目录 1.DHCP的接口&#xff08;interface&#xff09;配置 2.DHCP的全局&#xff08;global&#xff09;配置 3.dhcp relay 4.dhcp snooping 5.option 这里有一个简单的拓扑图 交换机配置命令如下 The device is running!<Huawei> <Huawei>sys Enter system …

原生Js Canvas去除视频绿幕背景

Js去除视频背景 注&#xff1a; 这里的去除视频背景并不是对视频文件进行操作去除背景 如果需要对视频扣除背景并导出可以使用ffmpeg等库&#xff0c;这里仅作播放用所以采用这种方法 由于uniapp中的canvas经过封装&#xff0c;且 uniapp 的 drawImage 无法绘制视频帧画面&…