SpringBoot(依赖管理和自动配置)

news2025/1/15 17:43:49

文章目录

    • 1.基本介绍
        • 1.springboot是什么?
        • 2.快速入门
          • 1.需求分析
          • 2.环境配置
            • 1.确认开发环境
            • 2.创建一个maven项目
            • 3.依赖配置 pom.xml
            • 4.文件目录
            • 5.MainApp.java (启动类,常规配置)
            • 6.HelloController.java (测试Controller)
            • 7.运行启动类
            • 8.浏览器向Conroller发送请求
        • 3.快速入门小结
          • 1.SpringBoot跟SSM的关系
          • 2.pom.xml依赖关系图
          • 3.Sping,SpringMVC,SpringBoot的关系
          • 4.约定优于配置
    • 2.依赖管理和自动配置
        • 1.版本仲裁
          • 1.什么是依赖管理?
          • 2.查看SpringBoot父项目的默认依赖版本
            • 1.pom.xml 找到springboot父工程
            • 2.找到父工程的依赖
            • 3.所有依赖的默认版本
          • 3.自己指定依赖版本
            • 1.方式一:在pom.xml中指定版本
            • 2.方式二:在pom.xml使用 `properties`标签指定 version
        • 2.starter场景启动器
          • 1.基本介绍
          • 2.依赖树
          • 3.SpringBoot自动配置核心依赖
          • 4.官方启动器(spring-boot开头)
          • 5.第三方启动器
        • 3.自动配置
          • 1.基本介绍
          • 2.获取ioc容器,查看SpringBoot自动配置的bean
          • 3.SpringBoot默认扫描包
          • 4.修改默认扫描包
            • 1.需求分析
            • 2.修改启动类注解,增加要扫描的包
            • 3.启动测试
          • 5.修改默认配置 `resources\application.properties`
            • 1.基本介绍
            • 2.创建一个resources\application.properties文件
            • 3.根据SpringBoot的配置大全找到对应的配置并修改
            • 4.关于application.properties配置文件的解释
            • 5.自定义配置
          • 6.SpringBoot常用配置一览
          • 7.解读SpringBoot是从哪里读取的配置文件
            • ctrl + n 进入ConfigFileApplicationListener
          • 8.按需加载原则
            • 1.基本介绍
            • 2.autoconfigure包管理着所有的starter
          • 9.关于xxxAutoConfiguration,xxxProperties,application.properties的关系
            • 1.简要介绍
            • 2.查看源码
            • 3.debug展示ioc容器

1.基本介绍

1.springboot是什么?

image-20240312085209968

2.快速入门
1.需求分析

image-20240312085713750

image-20240312085738097

2.环境配置
1.确认开发环境

image-20240312085951699

2.创建一个maven项目

image-20240312093523386

3.依赖配置 pom.xml
  <!--导入springboot父工程-->
  <parent>
    <artifactId>spring-boot-starter-parent</artifactId>
    <groupId>org.springframework.boot</groupId>
    <version>2.5.3</version>
  </parent>
  <dependencies>
    <!--配置maven项目场景启动器,自动导入和web相关的包-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  </dependencies>

image-20240312094203189

4.文件目录

image-20240312094915894

5.MainApp.java (启动类,常规配置)
package com.sun.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author 孙显圣
 * @version 1.0
 */
//表示是一个springboot项目
@SpringBootApplication
public class MainApp {
    public static void main(String[] args) {
        //启动springboot
        SpringApplication.run(MainApp.class, args);
    }
}

6.HelloController.java (测试Controller)
package com.sun.springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author 孙显圣
 * @version 1.0
 */
@Controller //仍然是spring注解
public class HelloController {
    @ResponseBody
    @RequestMapping("/hello")
    public String hello() {
        return "hello, springboot";
    }
}

7.运行启动类

image-20240312095203724

8.浏览器向Conroller发送请求

image-20240312095246334

3.快速入门小结
1.SpringBoot跟SSM的关系

image-20240312100232339

2.pom.xml依赖关系图

image-20240312100126819

image-20240312095953759

3.Sping,SpringMVC,SpringBoot的关系

image-20240312102228879

4.约定优于配置

image-20240312102936500

2.依赖管理和自动配置

1.版本仲裁
1.什么是依赖管理?

image-20240312103611623

2.查看SpringBoot父项目的默认依赖版本
1.pom.xml 找到springboot父工程

image-20240312103754545

2.找到父工程的依赖

image-20240312103904770

3.所有依赖的默认版本

image-20240312103941381

3.自己指定依赖版本
1.方式一:在pom.xml中指定版本

image-20240312104248485

2.方式二:在pom.xml使用 properties标签指定 version

image-20240312104442356

image-20240312104911259

2.starter场景启动器
1.基本介绍

image-20240312105641319

2.依赖树

image-20240312105723802

3.SpringBoot自动配置核心依赖

image-20240312105806447

4.官方启动器(spring-boot开头)

image-20240312105847048

5.第三方启动器

image-20240312105954594

3.自动配置
1.基本介绍

image-20240312110856440

2.获取ioc容器,查看SpringBoot自动配置的bean

image-20240312111130938

image-20240312111304960

3.SpringBoot默认扫描包

image-20240312111731617

4.修改默认扫描包
1.需求分析

image-20240312134648079

image-20240312134815420

2.修改启动类注解,增加要扫描的包

image-20240312135246056

3.启动测试

image-20240312135312667

5.修改默认配置 resources\application.properties
1.基本介绍

image-20240312135825996

2.创建一个resources\application.properties文件

image-20240312141705437

3.根据SpringBoot的配置大全找到对应的配置并修改

image-20240312141749128

4.关于application.properties配置文件的解释
  • 一个配置对应一个类的属性使用alt + b可以查找到对应的配置类
  • 对应的配置类会被注入到ioc容器中
5.自定义配置

image-20240312143551317

image-20240312143623413

6.SpringBoot常用配置一览
#端口号
server.port=10000
#应用的上下文路径(项目路径)
server.servlet.context-path=/allModel
#指定 POJO 扫描包来让 mybatis 自动扫描到自定义的 POJO
mybatis.type-aliases-package=com.cxs.allmodel.model
#指定 mapper.xml 的路径
#(application 上配置了@MapperScan(扫面 mapper 类的路径)和 pom.xml 中放行了 mapper.xml 后,
# 配 置 mapper-locations 没 有 意 义 。 如 果 mapper 类 和 mapper.xml 不 在 同 一 个 路 径 下 时 ,
mapper-locations 就有用了)
mybatis.mapper-locations=classpath:com/cxs/allmodel/mapper
#session 失效时间(单位 s)
spring.session.timeout=18000
#数据库连接配置
#mysql 数据库 url
mysql.one.jdbc-url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/Shanghai&useSSL=false
#mysql 数据库用户名
mysql.one.username=
#数据库密码
mysql.one.password=
#线程池允许的最大连接数
mysql.one.maximum-pool-size=15
#日志打印:日志级别 trace<debug<info<warn<error<fatal 默认级别为 info,即默认打印 info 及其以
上级别的日志
#logging.level 设置日志级别,后面跟生效的区域,比如 root 表示整个项目,也可以设置为某个包下,
也可以具体到某个类名(日志级别的值不区分大小写)
logging.level.com.cxs.allmodel.=debug
logging.level.com.cxs.allmodel.mapper=debug
logging.level.org.springframework.web=info
logging.level.org.springframework.transaction=info
logging.level.org.apache.ibatis=info
logging.level.org.mybatis=info
logging.level.com.github.pagehelper = info
logging.level.root=info
#日志输出路径
logging.file=/tmp/api/allmodel.log
#配置 pagehelper 分页插件
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
#jackson 时间格式化
spring.jackson.serialization.fail-on-empty-beans=false
#指定日期格式,比如 yyyy-MM-dd HH:mm:ss,或者具体的格式化类的全限定名
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#指定日期格式化时区,比如 America/Los_Angeles 或者 GMT+10
spring.jackson.time-zone=GMT+8
#设置统一字符集
spring.http.encoding.charset=utf8
#redis 连接配置
# redis 所在主机 ip 地址
spring.redis.host=
#redis 服务器密码
spring.redis.password=
#redis 服务器端口号
spring.redis.port=
#redis 数据库的索引编号(0 到 15)
spring.redis.database=14
## 连接池的最大活动连接数量,使用负值无限制
#spring.redis.pool.max-active=8
#
## 连接池的最大空闲连接数量,使用负值表示无限数量的空闲连接
#spring.redis.pool.max-idle=8
#
## 连接池最大阻塞等待时间,使用负值表示没有限制
#spring.redis.pool.max-wait=-1ms
#
## 最小空闲连接数量,使用正值才有效果
#spring.redis.pool.min-idle=0
#
## 是否启用 SSL 连接. ##spring.redis.ssl=false
#
## 连接超时,毫秒为单位
#spring.redis.timeout= 18000ms
#
## 集群模式下,集群最大转发的数量
#spring.redis.cluster.max-redirects=
#
## 集群模式下,逗号分隔的键值对(主机:端口)形式的服务器列表
#spring.redis.cluster.nodes=
#
## 哨兵模式下,Redis 主服务器地址
#spring.redis.sentinel.master=
#
## 哨兵模式下,逗号分隔的键值对(主机:端口)形式的服务器列表
#spring.redis.sentinel.nodes= 127.0.0.1:5050,127.0.0.1:506
7.解读SpringBoot是从哪里读取的配置文件
ctrl + n 进入ConfigFileApplicationListener

image-20240312144535194

8.按需加载原则
1.基本介绍

image-20240312144722690

2.autoconfigure包管理着所有的starter

image-20240312144846230

9.关于xxxAutoConfiguration,xxxProperties,application.properties的关系
1.简要介绍
  • xxxProperties这个单例bean的属性就是配置,读取application.properties来修改默认的配置
  • xxxAutoConfiguration这个单例bean的属性中有xxxProperties,通过依赖注入获取到xxxProperties的bean对象从而实现自动装配
2.查看源码

image-20240312150500278

image-20240312150637540

3.debug展示ioc容器

image-20240312151156955

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

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

相关文章

基于DataX迁移MySQL到OceanBase集群

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

Windows中在C#中使用Dapper和Mysql.Data库连接MySQL数据库

Windows中在C#中使用Dapper和Mysql.Data库连接MySQL数据库 在Windows中使用C#连接Mysql数据库比较简单&#xff0c;可以直接使用MySql.Data库&#xff0c;目前最新版本为&#xff1a;8.3.0。 当然也可以结合MySql.Data和Dapper库一起使用&#xff0c;目前Dapper的最新版本为&a…

rancher里的ingress如何配置gzip压缩

方案一&#xff0c;未试验成功&#xff0c;但配置过程值得记录一下 通过配置configmap&#xff0c;然后在ingress的deployment里引用configmap实现。 参考文章 创建configmap apiVersion: v1 kind: ConfigMap metadata:name: nginx-ingress-controllerannotations:{} # k…

【C++算法模板】图论-拓扑排序,超详细注释带例题

文章目录 0&#xff09;概述1&#xff09;Kahn算法1&#xff1a;数据结构2&#xff1a;建图3&#xff1a;Kanh算法 2&#xff09;DFS染色1&#xff1a;数据结构2&#xff1a;建图3&#xff1a;DFS 3&#xff09;算法对比【例题】洛谷 B3644 推荐视频链接&#xff1a;D01 拓扑排…

力扣串题:反转字符串中的元音字母

​​​​​​​ 双指针&#xff0c;注意判断是否为元音的操作 bool IsVowel(char s){if(sa||se||si||so||su||sA||sE||sI||sO||sU) return true;return false; }char * reverseVowels(char * s){int len strlen(s),i0;while(i<len-1){if(IsVowel(s[i])&&IsVowel(s…

谷粒商城——分布式基础(全栈开发篇第一部分)

文章目录 一、服务治理网路数据支撑日志处理ELK应用监控集成工具开发工具 二、环境创建1、虚拟机创建2、虚拟机安装docker等1. 安装docker1. 配置阿里docker3.docker安装mysql错误 4、docker安装redis 3、软件1.Maven 阿里云镜像1.8jdk2、idea lombokmybatisX &#xff0c;3、 …

使用CIP采集欧姆龙EtherNet/IP从入门到精通

本文将会从以下几个方面介绍 1.CIP是什么 2.EtherNet/IP通信是什么 3.CIP通信报文解析 4.使用CIP常用的方法和功能介绍&#xff08;UCMM&#xff09; 5.自己封装了一个类&#xff0c;只要知道标签名称&#xff0c;和数据类型即可读写数据 6.demo展示 1.CIP是什么 CIP通信…

操作多级(一、二、三级)指针才是我们的该有的姿态~

Hello&#xff0c;很有缘在这篇文章上我们相遇了&#xff0c;那么我就用题目巩固我们多级指针的知识&#xff0c;当然这里的题目是比较有点难度的&#xff0c;我们需要有点基础呀&#xff0c;如果你能轻松理解题目那说明你对指针的了解已经很有基础了呢&#xff0c;那废话不多说…

Vue3自定义指令!!!

通过自定义指令实现菜单显示和权限控制问题。 一、新建一个在src目录下创建包directives&#xff0c;在包中创建一个ts文件。 import { useStore } from "/store/pinia";function hasRoles(role: any) {const pinaRoles useStore().roles;if (typeof role "s…

H5 流光分割个人主页源码

源码名称&#xff1a;流光分割个人主页源码 源码介绍&#xff1a;一款流光分割特效个人主页源码&#xff0c;源码带大量跳转个人联系方式按钮和朋友按钮。同时带有个人介绍。 需求环境&#xff1a;H5 下载地址&#xff1a; https://www.changyouzuhao.cn/10241.html

新品发布:广州大彩科技COF系列2.1寸480*480 IPS 串口屏发布!

一、产品介绍 该产品是一款2.1寸分辨率为 480480的医用级工业组态串口屏&#xff0c;拥有2.1寸IPS液晶屏&#xff0c;分辨率有480480&#xff08;实际显示为R240内切圆区域&#xff09;&#xff0c;支持电容触摸。采用COF超薄结构工艺设计&#xff0c;用户安装便捷灵活&#x…

REDHAWK——组件结构

文章目录 前言一、自动生成的组件文件1、为所有组件生成的文件2、为 C 组件生成的文件 二、自动生成的组件方法三、基础组件成员1、Ports2、Properties3、枚举①、C②、Java③、Python 4、Domain Awareness5、网络接口 四、组件实现五、管理和定义属性1、属性 ID2、属性名3、属…

C语言:字符串逆序输出, test ok

【问题描述】字符串逆序&#xff1a;设计函数功能是将一个字符串逆序&#xff0c;函数声明&#xff1a;void stringNx(char a[ ])&#xff0c;使用这个函数完成将输入的字符串逆序输出。 【输入形式】要求输入一个字符串 【输出形式】逆序后输出 【样例输入】abcd 【样例输…

Javaweb-MyBatis

一、概念 MyBatis是一款优秀的持久层框架&#xff0c;用于简化JDBC开发 MyBatis本是Apache的一个开源项目iBatis&#xff0c;2010年这个项目由apache software found迁移到了google code&#xff0c;并且改名为MyBatis。2013年11月迁移到Github 持久层 负责将数据到保存到数…

openGauss学习笔记-243 openGauss性能调优-SQL调优-典型SQL调优点-子查询调优

文章目录 openGauss学习笔记-243 openGauss性能调优-SQL调优-典型SQL调优点-子查询调优243.1 子查询调优243.1.1 子查询背景介绍243.1.2 openGauss对SubLink的优化243.1.3 更多优化示例 openGauss学习笔记-243 openGauss性能调优-SQL调优-典型SQL调优点-子查询调优 SQL调优是一…

【BOM笔记】基本概述、window对象常见事件、定时器、JS执行机制、location/navigator/history对象

文章目录 1 BOM概述1.1 什么是BOM1.2 BOM的构成 2 window 对象的常见事件2.1 窗口加载事件2.2 调整窗口大小事件 3 定时器3.1 setTimeout() 定时器3.2 setInterval() 定时器3.3 this 4 JS 执行机制4.1 JS 是单线程4.2 同步和异步4.3 JS 执行机制 5 location 对象5.1 属性5.2 方…

【深度学习笔记】9_9 语义分割和数据集

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 9.9 语义分割和数据集 在前几节讨论的目标检测问题中&#xff0c;我们一直使用方形边界框来标注和预测图像中的目标。本节将探讨语义分…

【欢迎投稿|稳定检索|高录用】2024年建筑土木与水利工程国际学术会议(ICBCHE 2024)

【欢迎投稿|稳定检索|高录用】2024年建筑土木与水利工程国际学术会议&#xff08;ICBCHE 2024) 苏老师 电话&#xff1a;19113133262&#xff08;微信同号&#xff09; QQ&#xff1a;2950880851 【投稿时请附言&#xff1a;icbche投稿苏老师推荐 将享有优先审稿及录用和学…

weblogic CVE-2023-21839详细复现

1、本次复现使用vulhub的靶场 切换到靶场的目录下&#xff0c;用docker -compose up -d启动靶场 使用docker-compose ps -a查看靶场的端口 2、访问开启的环境 3、准备工作都做好之后开始复现 &#xff08;1&#xff09;开启JNDIExploit 工具地址&#xff1a;GitHub - WhiteH…

HNU-计算机系统-实验1-原型机vspm1.0-(二周目玩家视角)

前言 二周目玩家&#xff0c;浅试一下这次的原型机实验。总体感觉跟上一年的很相似&#xff0c;但还是有所不同。 可以比较明显地感觉到&#xff0c;这个界面越来越好看了&#xff0c;可操作与可探索的功能也越来越多了。 我们HNU的SYSTEM真的越来越好了&#xff01;&#x…