博客
关于我
【SpringBoot】——基础知识
阅读量:612 次
发布时间:2019-03-12

本文共 2767 字,大约阅读时间需要 9 分钟。

文章目录

1、SpringBoot与Spring的区别

SpringBoot源自Spring家族,继承了Spring的核心功能与优势。与传统的Spring相比,SpringBoot简化了基于Spring的应用开发流程,通过少量配置即可快速构建Spring应用。SpringBoot自动化配置了大量常用场景,简化了项目搭建过程,特别适合快速开发和部署。

SpringBoot内置了场景启动器(starter),通过导入相应的启动器依赖,可以自动加载所需的模块和配置。与传统的Spring不同,SpringBoot直接嵌入Servlet容器,开发和部署时无需额外安装Web容器,极大提升了开发效率和项目维护的简便性。

SpringCloud是SpringBoot扩展的一部分,专注于构建分布式系统,特别适用于微服务架构的开发。

SpringCloud提供了一套基于SpringBoot的工具链,支持构建分布式系统和微服务架构,适用于复杂的后台服务开发。

2、SpringBoot核心设计理念

SpringBoot的核心设计理念是“约定大于配置”,强调默认配置和标准化开发模式。基于这一原则,SpringBoot减少了手动配置的工作量,通过默认的配置和约定俗成的开发规范,提升了开发效率。

“约定大于配置”并不意味着完全不需要手动配置,而是通过合理的默认设置,减少不必要的配置工作。例如,添加spring-boot-starter-web启动器后,SpringBoot会自动配置Spring MVC和内置的Tomcat容器,简化了项目的部署和配置流程。

SpringBoot通过spring.factories文件自动加载配置类,实现了自动化配置的功能。开发者无需手动配置数据库、日志、编码等常用设置,SpringBoot会自动处理这些基础设施的搭建和管理。

SpringBoot的场景启动器(starter)维护了完整的依赖版本,避免了手动管理依赖冲突和版本升级的问题,极大提升了项目的可维护性和稳定性。

3、@SpringBootApplication注解深入解析

@SpringBootApplication注解是SpringBoot项目开发中的核心标识符。与传统的Spring项目相比,SpringBoot项目不再需要SpringApplication.run()启动方法,也无需手动配置Spring容器。

@SpringBootApplication注解是SpringBoot特有的复合注解,包含了@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan三个注解。其中@SpringBootConfiguration注解相当于传统的@Configuration注解,用于定义配置类。

@EnableAutoConfiguration注解开启了SpringBoot的自动化配置功能,通过自动探测可用的配置类并将其注册到Spring容器中。SpringBoot会自动配置数据库、日志、视图解析器等常用组件,极大提升了开发效率。

@ComponentScan注解负责组件扫描,自动注册Spring容器中标注了@Component@Service@Repository等注解的类。通过注解配置,开发者可以指定需要扫描的包路径,简化了组件管理的配置工作。

4、SpringBoot项目启动步骤详解

SpringBoot项目的启动流程主要包括几个关键步骤:

(1) 实例化SpringApplication对象

(2) 执行run()方法启动SpringBoot应用,整个启动过程会记录代码执行时间并打印启动时间

(3) 配置java.awt.headless属性,确保无显示器环境下也能正常启动

(4) 获取SpringApplicationRunListeners并执行启动回调

(5) 解析启动参数并封装为DefaultApplicationArguments对象

(6) 准备运行环境prepareEnvironment()方法

(7) 设置系统属性configureIgnoreBeanInfo()方法

(8) 获取启动Banner对象并打印启动信息

(9) 创建Spring容器ApplicationContext实例

(10) 处理容器刷新逻辑和启动后置事件

Spring容器是SpringBoot应用的核心,负责管理Spring框架的IOC和依赖注入。通过ApplicationContext接口,Spring容器提供了一套统一的配置和管理接口,支撑整个应用的运行。

5、DispatcherServlet的作用与流程

DispatcherServlet是SpringMVC的核心前端控制器,负责接收和处理用户请求。

DispatcherServlet的主要功能包括:

1. 接收用户的HTTP请求

2. 根据请求URL调用处理器映射器查找对应的Handler

3. 通过处理器适配器调用实际的业务逻辑Handler

4. 将处理器返回的逻辑视图转换为物理视图

5. 渲染视图并将处理结果返回给用户

6、静态资源管理

SpringBoot默认支持多个静态资源目录,常见的路径包括:

classpath:/META-INF/resources/

classpath:/resources/

classpath:/static/

classpath:/public/

开发者可以根据项目需求,将静态资源文件放入以上任意一个或多个目录中,SpringBoot会自动识别并提供静态资源服务。如果需要自定义静态资源路径,可以通过application.properties文件进行配置。

7、SpringMVC核心功能概述

SpringMVC是SpringBoot默认集成的MVC框架,提供了完整的Web应用开发支持。其核心功能包括:

1. 自动配置视图解析器

2. 静态资源管理

3. 转换器和格式化器注册

4. HttpMessageConverter支持

5. 消息编码解析

6. 默认欢迎页配置

7. favicon自动配置

8. Web初始化绑定

通过WebMvcAutoConfiguration自动配置类,SpringMVC提供了丰富的默认配置,极大简化了Web项目的开发流程。

SpringMVC的Controller方法可以返回多种视图类型,视图解析器负责将逻辑视图转换为物理视图。消息转换器通过@RequestBody@ResponseBody注解支持请求实体和响应结果的格式化处理,极大提升了API开发的效率和用户体验。

转载地址:http://ryixz.baihongyu.com/

你可能感兴趣的文章
logstash mysql 准实时同步到 elasticsearch
查看>>
Luogu2973:[USACO10HOL]赶小猪
查看>>
mabatis 中出现< 以及> 代表什么意思?
查看>>
Mac book pro打开docker出现The data couldn’t be read because it is missing
查看>>
MAC M1大数据0-1成神篇-25 hadoop高可用搭建
查看>>
mac mysql 进程_Mac平台下启动MySQL到完全终止MySQL----终端八步走
查看>>
Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
查看>>
MangoDB4.0版本的安装与配置
查看>>
Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
查看>>
mapping文件目录生成修改
查看>>
MapReduce程序依赖的jar包
查看>>
mariadb multi-source replication(mariadb多主复制)
查看>>
MariaDB的简单使用
查看>>
MaterialForm对tab页进行隐藏
查看>>
Member var and Static var.
查看>>
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
查看>>
memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
查看>>
Memcached:Node.js 高性能缓存解决方案
查看>>
memcache、redis原理对比
查看>>
memset初始化高维数组为-1/0
查看>>