博客
关于我
【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/

你可能感兴趣的文章
mysql
查看>>
MTK Android 如何获取系统权限
查看>>
MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况、SQL 优化
查看>>
MySQL - ERROR 1406
查看>>
mysql - 视图
查看>>
MySQL - 解读MySQL事务与锁机制
查看>>
MTTR、MTBF、MTTF的大白话理解
查看>>
mt_rand
查看>>
mysql -存储过程
查看>>
mysql /*! 50100 ... */ 条件编译
查看>>
mysql 1045解决方法
查看>>
mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法...
查看>>
mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
查看>>
mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
查看>>
mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
查看>>
mui折叠面板点击事件跳转
查看>>
MySQL 8 公用表表达式(CTE)—— WITH关键字深入用法
查看>>
mysql 8 远程方位_mysql 8 远程连接注意事项
查看>>
MUI框架里的ajax的三种方法
查看>>
MySQL 8.0 恢复孤立文件每表ibd文件
查看>>