Java --- springboot3依赖管理和自动配置机制

news2024/11/24 9:14:43

目录

一、依赖管理机制

二、自动配置机制 


一、依赖管理机制

🚕、为什么导入starter-web所有相关依赖都导入进来?

①、开发什么场景,导入什么场景启动器。

②、maven依赖传递原则。A-B-C: A就拥有B和C

③、导入 场景启动器。 场景启动器 自动把这个场景的所有核心依赖全部导入进来

🛺、为什么版本号都不用写?

每个boot项目都有一个父项目spring-boot-starter-parent

parent的父项目是spring-boot-dependencies

父项目 版本仲裁中心,把所有常见的jar的依赖版本都声明好了。

比如:mysql-connector-j

🚙、自定义版本号

利用maven的就近原则

    直接在当前项目properties标签中声明父项目用的版本属性的key

    直接在导入依赖的时候声明版本

🛻、第三方的jar包

boot父项目没有管理的需要自行声明好

<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.16</version>
</dependency>

二、自动配置机制 

🛻、自动配置的 Tomcat、SpringMVC 等

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

以前:DispatcherServlet、ViewResolver、CharacterEncodingFilter....

现在:自动配置好的这些组件

验证:容器中有了什么组件,就具有什么功能

 public static void main(String[] args) {
        //Java10 局部变量类型的自动推断
        var run = SpringApplication.run(Boot301Application.class, args);
        //获取容器中所有组件的名字
        String[] names = run.getBeanDefinitionNames();
        //遍历循环
        for (String name:names){
            System.out.println(name);
        }
    }

🚙、默认的包扫描规则

​​​​​​​@SpringBootApplication 标注的类就是主程序类

​​​​​​​SpringBoot只会扫描主程序所在的包及其下面的子包,自动的component-scan功能

​​​​​​​自定义扫描路径

   @SpringBootApplication(scanBasePackages = "com.cjc")

   ​​​​​​​@ComponentScan("com.cjc") 直接指定扫描的路径

🛺、配置默认值

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

绑定了配置文件中每一项值的类: 属性类

比如:①、​​​​​​​ServerProperties绑定了所有Tomcat服务器有关的配置。

②、​​​​​​​MultipartProperties绑定了所有文件上传相关的配置。

③、参照官方文档:或者参照 绑定的 属性类

🚕、按需加载自动配置

1、导入场景spring-boot-starter-web

2、场景启动器除了会导入相关功能依赖,导入一个spring-boot-starter,是所有starterstarter,基础核心starter

3、​​​​​​​spring-boot-starter导入了一个包 spring-boot-autoconfigure。包里面都是各种场景的AutoConfiguration自动配置类

4、虽然全场景的自动配置都在 spring-boot-autoconfigure这个包,但是不是全都开启的。

导入哪个场景就开启哪个自动配置

 

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript 发展的前世今生

专栏介绍 本专栏主要用作于开放性知识点分享学习&#xff0c;其主要知识点范围是 以围绕 原生 JavaScript 语法 从基础知识到高阶语法阶段的学习分享。 导语&#xff1a; 既然博主&#xff0c;计划将此专栏打造为 JavaScript 的知识点学习分享集结地。所以&#xff0c;本章节就…

奥威BI,适合中国电商的大数据分析平台

电商数据分析做得好不好&#xff0c;除了分析思维这类主要因素外&#xff0c;大数据分析平台的选择也尤为重要。从电商数据分析实际体验来看&#xff0c;电商行业需要大数据分析平台需满足海量数据秒分析、数据直观易懂、操作简单易上手这三大基础要求&#xff0c;如能提供系统…

Tomcat下载安装以及配置

目录 tomcat的下载安装 修改控制台乱码 idea配置tomcat tomcat的下载安装 到tomcat的官网https://tomcat.apache.org/下载所需版本&#xff0c;我们下载的tomcat必须要和我们的jdk相匹配否则会导致tomcat运行和部署的时候出错&#xff0c;挑选tomcat的版本的时候参考下图 …

阿里系cookie之acw_sc__v2 逆向分析

文章目录 声明案例地址目标参数加密流程与逆向分析js代码python调用测试声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请私信我立即删除! cookie中使用acw_sc__v2的网站有很多,比如前程无忧、诸葛找房、…

2023年6月跟资深软考辅导专家学习备考软考(中/高级)到这家

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…

收集关键词的方法有哪些?(如何查找精准的行业流量关键词)

关键词的收集通常可以通过以下几种方法: 关键词收集方法 1.根据市场价值、搜索词竞争性和企业实际产品特征进行筛选&#xff1a;确定您的关键词列表之前&#xff0c;建议先进行市场分析&#xff0c;了解您的竞争对手、行业状况和目标受众等信息&#xff0c;以更好地了解所需的特…

if __name__ == ‘__main__‘详细解释及实操演示

在Python中&#xff0c;每个模块都有一个内置的变量 name&#xff0c;用于表示当前模块的名称。当一个Python文件被执行时&#xff0c;Python解释器会首先将该文件作为一个模块导入&#xff0c;并执行其中的代码。此时&#xff0c;__name__的值为模块的名称。 if name ‘main…

浅谈RPC,gRPC和RESTful

RPC 远程过程调用&#xff08;Remote Procedure Call&#xff0c;RPC&#xff09;是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一个地址空间&#xff08;通常为一个开放网络的一台计算机&#xff09;的子程序&#xff0c;而程序员就像调用本地程序一样&…

UniFi USW-Flex 室内-室外 POE 交换机

选择理由 选择理由是是因为要户外使用&#xff0c;对比下户外可以使用的 POE 交换机并不是很多。 UniFi USW-Flex 室内-室外 5 端口 PoE 千兆交换机能够支持在户外和户内使用。 户外使用需要具有基本的防水性能&#xff0c;尤其是冬天比较寒冷的时候也需要具备一定的环境耐受…

SpringBoot接收请求参数的方式

【方式一】原始方式 因为SpringBoot封装了Servlet&#xff0c;所以也允许使用HttpServletRequest类中的方法来获取 /*** 【方式一】原始方式*/RequestMapping("/demo01")public String demo01(HttpServletRequest request) {// 参数名要与页面提交的参数名一致Strin…

【十二】设计模式~~~行为型模式~~~命令模式(Java)

命令模式-Command Pattern【学习难度&#xff1a;★★★☆☆&#xff0c;使用频率&#xff1a;★★★★☆】 1.1. 模式动机 在软件设计中&#xff0c;我们经常需要向某些对象发送请求&#xff0c;但是并不知道请求的接收者是谁&#xff0c;也不知道被请求的操作是哪个&#xf…

是德Keysight N9000A(agilent)N9000B CXA信号分析仪

Keysight N9000A (Agilent) CXA 信号分析仪是一款多功能、低成本的工具&#xff0c;可用于基本信号表征。它可以帮助您在多个层面上加速产品测试和开发&#xff1b;降低成本、吞吐量、设计增强等。通过 CXA 中的 X 系列可扩展性获得基本功能 -并期待更多。 我们无法预测未来&a…

Midjourney绘制插画,绘画重来没有如此之简单 - 第12篇

历史文章&#xff08;文章累计460&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 用…

【Mininet】基础篇:Mininet创建简单网络拓扑及简单网络拓扑脚本编写

大家好&#xff0c;我是文思月&#xff01; 每文一言&#xff1a;不要假装努力&#xff0c;结果不会陪你演戏&#xff01; 本篇文章&#xff1a; 使用Mininet创建简单的网络拓扑&#xff0c;并创建网络拓扑脚本。 正文如下&#xff1a; 1. 最小网络拓朴 创建最小的网络拓扑…

c++多态及其多态的原理

目录 多态的定义及实现多态的条件 多态的原理虚函数表动态绑定和静态绑定总结多态原理 单继承和多继承下的虚函数表单继承下的虚函数表&#xff08;有虚函数覆盖&#xff09;多继承下的虚函数表&#xff08;有虚函数覆盖&#xff09;为什么子类对象赋值给父类对象&#xff0c;也…

耕耘不缀、丰收如期,中药入血组又双叒叕升级了

春去夏来&#xff0c;小满已至&#xff0c;麦浪序曲逐渐拉响&#xff0c;百趣人在中药领域的勤耕不辍也迎来了本年度的第一次丰收。中药入血组作为中药临床应用重磅产品&#xff0c;此次升级可谓“一优化&#xff0c;两提升&#xff0c;三新增”。“一优化”为分析图例优化&…

Python之pyecharts的常见用法1-水球图

Pyecharts是一个基于Echarts的Python可视化库&#xff0c;可以用Python语言轻松地生成各种交互式图表和地图。它支持多种图表类型&#xff0c;包括折线图、柱状图、散点图、饼图、地图等&#xff0c;并且可以通过简单的API调用实现数据可视化。 Pyecharts的优点包括&#xff1a…

Spring Cloud Alibaba 整合Seata 之概念介绍及Seata-server搭建

目录 前言 基础介绍 官方文档 模式分类 角色介绍 Seata Server 部署 - docker-compose 数据库 服务器 docker-compose.yaml nacos配置 启动 前言 Seata 是 阿里巴巴 开源的 分布式事务中间件&#xff0c;以 高效 并且对业务 0 侵入 的方式&#xff0c;解决 微服务…

过零投切开关的安科瑞低压电力电容器设计

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘要&#xff1a;目前&#xff0c;我们经常使用的电容器投切开关在实际的运行过程中还存在着很多问题&#xff0c;新型的过零投切开关主要利用微电子技术&#xff0c;同时企业对电路的结构等开展了进一步的优化与调整…

真的有必要定义VO,BO,PO,DO,DTO吗?

今天给大家带来一篇关于VO&#xff0c;BO&#xff0c;PO&#xff0c;DO&#xff0c;DTO的文章&#xff0c;阅读完这篇文章之后&#xff0c;希望大家对VO&#xff0c;BO&#xff0c;PO&#xff0c;DO&#xff0c;DTO有自己的见解。 1. 概念 在讲具体的概念之前&#xff0c;我们…