博客
关于我
【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 是怎样运行的 - InnoDB数据页结构
查看>>
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询数据库所有表的字段信息
查看>>
【Java基础】什么是面向对象?
查看>>
mysql 查询,正数降序排序,负数升序排序
查看>>
MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
查看>>
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>
MySQL 死锁了,怎么办?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 添加列,修改列,删除列
查看>>