当前位置: 首页 > news >正文

SpringBoot 第一课(Ⅰ)--框架结构

目录

回顾

SpringBoot框架结构

1.项目主程序类

@SpringBootApplication

@EnableAutoConfiguration

2.pom.xml文件

Starters 和 依赖管理插件

3.⭐资源配置文件⭐

SpringBoot的热部署

配置文件

书写规范

① .properties配置文件

② .yml配置文件

 


在前两篇文章中已经对SpringBoot的配置和一些基础概念做了详细讲解,在这篇文章中将正式开始对SpringBoot的学习。

回顾

配置SpringBoot框架:

SpringBoot(一)--搭建架构5种方法_搭建spring boot-CSDN博客

SpringBoot基础入门:

SpringBoot 入门基础-CSDN博客

SpringBoot框架结构

1.项目主程序类

如果是正常创建SpringBoot项目的话,一般会自动生成这个文件,但是如果用了那5种创建方式中用maven项目改造成SpringBoot的话,则需要手动添加一下这个文档。

DemoApplication代码如下:

package com.qcby.sbdemotest01;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan(basePackages = "com.qcby") // 确保扫描到Person类所在的包(可省略)
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

即: 

项目主驱动类代码一览

@SpringBootApplication

Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用。

【Ctrl】+单击@SpringBootApplication可以看到底层实现元注解:

组成@ SpringBootApplication注解的元注解

 

由上图可知,组成@SpringBootApplication的元注解里就包含@ComponentScan注解,所以在上面图片中②中显式再声明一遍意义作用不大(参见spring boot扫描的范围,是涵盖这个范围的。)。

spring boot扫描的范围:Spring Boot 默认扫描的范围是主启动类所在的包以及其直接子包。这包括了主启动类所在包平行的包(注意:这不包括更高层次的父包)。

@EnableAutoConfiguration

ctrl+单击点开@EnableAutoConfiguration后,可以看见实现这个注解的元注解们:

组成@EnableAutoConfiguration注解的元注解
  • @AutoConfigurationPackage:指定自动配置应该扫描的包
  • @Import 是 Spring 框架的元注解,用于导入其他配置类或组件到当前的配置环境中。

关于自动装配这里的详细知识,可以参考这篇文章:SpringBoot 自动装配原理源码分析_springboot自动装配源码解析-CSDN博客

2.pom.xml文件

Starters依赖管理插件

在传统的SSM项目,pom.xml文件中需要对每一个导入的依赖都进行版本控制,还要提防因为版本不兼容而引发的错误。

就像这样,编写十分的繁琐:

普通SSM项目的pm.xml文件

 但是在SpringBoot项目的pom.xml文件中,则是导入一个个的starter依赖,使用starter最大的好处就是不用考虑版本不兼容等问题,就像这样:

SpringBoot项目的pom.xml文件

 这里不设置版本号并不意味着不用处理,而是将这个适配的过程交给了SpringBoot框架处理,我们只需要声明一个适配的父项目即可。

至于为什么SpringBoot项目声明父项目版本后就不用声明那些依赖的版本,可以ctrl+单击上图位置看一下:

点击进parent查看

再ctrl+单击这里:

点进dependencies查看

 

可以看见里面有密密麻麻的版本号,这就意味着实现的spring-boot-starter-parent里都封装好了一套自己适配的所以依赖。

这就类似于修理箱(<parent>)和里面的螺丝刀、镊子等等(一个个依赖),在原始的SSM项目中我们需要一点点去拼凑项目需要的适配工具,但是在SpringBoot项目中只需要确认这个修理箱的型号就可以得到一整套适配的工具。

3.⭐资源配置文件⭐

在讲解配置文件前,先引进一个很方便的功能:热部署。

SpringBoot的热部署

spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。

导入依赖:

<dependency> 
<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-devtools</artifactId> 
<optional>true</optional> 
</dependency>

 配置这个依赖后就可以在修改java代码或者配置文件模板后通过Ctrl+F9来实施更新修改操作而不用再重启项目。

配置文件

SpringBoot使用一个全局的配置文件,配置文件名是固定的:

•application.properties

•application.yml

书写规范
① .properties配置文件

规范格式说明
键值对结构key=value 或 key:value键和值之间用等号(=)或冒号(:)分隔。
注释# 这是注释使用井号(#)开头,表示注释。
嵌套结构parent.child=value使用点(.)表示层级关系。
字符串值key=This is a string直接写值,无需引号。
数字值key=12345直接写数字。
布尔值key=true 或 key=false使用truefalse表示布尔值。
多行值key=line1\ line2使用反斜杠(\)换行。
列表值key=value1,value2 或 key[0]=value1<br>key[1]=value2用逗号分隔或下标表示。
缩进和空格key = value键和值之间可有空格,但建议保持简洁。
② .yml配置文件
规范类别内容格式说明
基本语法键值对格式k: vv前的空格必须有
基本语法层级关系缩进控制左对齐的列属于同一层级
基本语法大小写敏感属性和值都是大小写敏感的
值的写法字面量直接写数字、布尔值直接写,字符串默认不加引号
值的写法字符串(双引号)k: "v"不会转义特殊字符,特殊字符按原义解析(会实现换行)
值的写法字符串(单引号)k: 'v'会转义特殊字符,特殊字符作为普通字符串(会将\n打印出来,不实现换行)
对象(Map)格式k: v(缩进)对象的属性在下一行缩进表示
对象(Map)示例user: name: zhangsan<br>age: 25缩进表示层级关系
数组(List、Set)多行写法- 值每个元素用-表示
数组(List、Set)行内写法[值1, 值2]使用方括号表示数组

注:properties配置文件在idea中默认utf-8可能会乱码

相关文章:

  • 订单超时自动取消功能如何设计
  • 自然语言处理预训练模型的研究综述
  • C++——STL 常用的排序算法
  • C++使用ZeroMQ和MessagePack实现简单又轻量级的RPC框架
  • Spring是如何管理事务的
  • Blender-MCP服务源码2-依赖分析
  • 汽车感性负载-智能高边钳位能量计算
  • LeetCode 3110.字符串的分数:模拟(注意一个小细节)
  • 《基于机器学习(xgboost)的人体卡路里消耗预测系统》开题报告
  • phpstudy+phpstorm+xdebug【学习笔记】
  • PreparedStatement:Java 数据库操作的安全与高效之道
  • 找工作、创业的思考和出路
  • 基于CSV构建轻量级数据库:SQL与Excel操作的双模实践
  • 【快速入门】MyBatis
  • 《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(43)阴阳镜照连通 - 岛屿数量(DFS、BFS)
  • 使用CLINE来实现智能家居控制系统
  • c#Winform也可以跨平台了GTK框架GTKSystem.Windows.Forms
  • Centos7使用docker搭建redis集群
  • leetcode 42. 接雨水
  • AD画板学习
  • 崔登荣任国家游泳队总教练
  • 小米SU7 Ultra风波升级:数百名车主要求退车,车主喊话雷军“保持真诚”
  • 明查|印度空军“又有一架战机被巴基斯坦击落,飞行员被俘”?
  • 国产水陆两栖大飞机AG600批产首架机完成总装下线
  • 江西省市场监管局原局长谢来发被双开:违规接受旅游活动安排
  • 云南一男子持刀致邻居3死1重伤案二审开庭,未当庭宣判