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

Spring Boot:筑基

Spring Boot

  • 前言
  • 概述
  • 使用 Intellij idea 快速创建 Spring Boot 项目
    • 注意事项

在这里插入图片描述

前言

在学习 Spring 、SpringMVC 、MyBatis 和 JPA 框架的过程中,了解到 SSM 框架为 Java Web 开发提供了强大的后端支持,JPA 框架则简化了数据库的操作。然而,SSM 框架需要手动配置大量 XML 文件,JPA 框架也需要处理繁琐的配置和整合工作。

Spring Boot 框架继承了 SSM 框架和 JPA 框架的优点,并在此基础上进行了优化和扩展。其可以通过自动配置和起步依赖,极大地简化了配置工作。同时,Spring Boot 整合了 Servlet 容器,无需额外配置即可运行 Web 应用程序,还提供了丰富的命令行界面和监控管理功能,方便开发者对应用程序进行测试、调试和监控。总体来说,Spring Boot 的生态系统是非常完善的,与各种技术和框架都能很好地集成。

简而言之,Spring Boot 能够进一步简化开发过程,提高开发效率,同时提供了强大的功能和生态系统支持。对于希望快速构建稳定可靠系统的开发者来说,Spring Boot 无疑是一个不可多得的好工具。在完成 SSM 和 JPA 框架的学习后,再学习 Spring Boot 框架是一个自然而然的进阶过程。下面简单介绍 Spring Boot 框架的基础知识。

概述

Spring Boot,是基于 Spring 框架的延伸,是一个旨在简化 Spring 应用程序初始搭建以及开发过程的工具。其设计目标是让开发者能够尽可能快速地搭建 Spring 应用程序,并尽可能减少配置文件的使用,使得开发者能够更专注于业务逻辑的实现。

在这里插入图片描述

Spring Boot 主要功能

  • 自动配置:Spring Boot 的核心特性之一,其可以根据项目中的 jar 包、类和其他依赖项,自动为 Spring 应用程序中的组件进行配置,极大地减少了手动配置的工作量。
  • 起步依赖:Spring Boot 提供了大量的起步依赖( starter ),这些起步依赖预装了常用的库和框架,使得开发者能够快速地集成所需的功能,而无需手动添加大量的依赖项。
  • 内嵌 Servlet 容器:Spring Boot 可以内嵌 Servlet 容器(如 Tomcat 、Jetty 或 Undertow 等),这使得开发者无需部署到外部的 Servlet 容器中,而是可以直接运行 Spring Boot 应用程序。
  • 简化数据库操作:Spring Boot 可以方便地集成各种 SQL 和 NoSQL 数据库(如 MySQL 、Oracle 、MongoDB 和 Redis 等)。通过集成 Spring Data JPA 或 MyBatis 等持久层框架,可以简化数据库操作。
  • 缓存支持:Spring Boot 提供了对各种缓存技术的支持(如 Ehcache 、Redis 、Memcached 和 Hazelcast 等),这些技术可以用来提高应用程序的性能。
  • 日志管理:Spring Boot 提供了强大的日志框架,可以方便地进行日志的管理和记录,帮助开发者更好地追踪和调试应用程序中的问题。
  • 任务调度:Spring Boot 支持使用 Spring Task 和 Quartz 等任务调度框架,实现定时任务和异步任务。
  • 邮件发送:Spring Boot 内置了邮件发送的支持,可以方便地实现邮件发送功能。
  • 页面渲染:Spring Boot 支持多种页面渲染技术(如 Thymeleaf 、FreeMarker 和 JSP 等),使得开发者可以轻松地创建和展示动态页面。
  • 模块化开发:在 Spring Boot 项目中,通常会有多个模块,如 Entity(实体层)、Dao(数据访问层)、Service(服务层)、Controller(控制层)和 Utils(工具层) 等,这些模块各司其职,使得开发过程更加清晰和模块化。

使用 Intellij idea 快速创建 Spring Boot 项目

在项目开发中,通常使用 Intellij idea 来快速创建一个 Spring Boot 项目(以 Intellij idea 2023.3.3 、JDK 20.0.2 、Maven 3.8.1 、Spring Boot 3.0.2 为例)。

注:如果自身的 IntelliJ IDEA 版本过低,建议安装新版本的 IntelliJ IDEA ,否则可能出现比较难解决且不必要的麻烦。

简单示例:

1. 打开 Intellij idea ,点击 New Project ,创建新项目
在这里插入图片描述

2. 根据自身偏好设置项目的信息

注:
Server URL 设置为 https://start.aliyun.com ,可选择更低版本的 Java .
Type 设置为 Maven .
JDK 中可以选择下载 1.8 以上版本的 JDK .

在这里插入图片描述

3. 选择 Spring Boot 3.0.2 ,并勾选 Web 中的 Spring Web ,以其为例,点击 Create

注:
这个是 Spring Boot 起步依赖的功能
勾选的为启动器( Starter ),是一组预定义的依赖集合,会为项目提供了一系列的自动配置。

常见的 Spring Boot 启动器:

  • spring-boot-starter-web:用于构建 Web 应用,包括 Spring MVC 和 Tomcat 。
  • spring-boot-starter-data-jpa:用于使用 JPA 进行数据库操作。
  • spring-boot-starter-thymeleaf:用于使用 Thymeleaf 模板引擎。
  • spring-boot-starter-security:用于添加 Spring Security 安全功能。
  • spring-boot-starter-amqp:用于添加 AMQP 消息代理支持。
  • spring-boot-starter-cloud-connectors:用于与 Spring Cloud Connectors 集成。

每个启动器都包含了一系列与特定功能相关的库,以及必要的自动配置代码。

在这里插入图片描述

4. 创建完成后,可以将部分文件删除,并创建项目可能所需要的文件
项目目录结构如图:

注:
resources 目录结构中,static 用于存放静态资源文件;templates 用于存放视图模板;application.properties 为 Spring Boot 全局配置文件,可修改配置,但文件名不可修改

5. 最后启动
在这里插入图片描述

结果如图:
在这里插入图片描述

注意事项

开始使用的是 IntelliJ IDEA 2018.3.6 x64 版本,出现了如下问题:

  1. Artifact contains illegal characters
    原因:该版本中 Artifact 内容需要为小写,大写会报错。

  2. Error: Request failed with status code 500
    在这里插入图片描述
    原因:Type 选项中没有选择 Maven 。

  3. 项目创建完成后,但 pom.xml 中部分标签内容会报红,没有成功创建(尝试多种方法,暂无法解决,建议安装新版本的 IntelliJ IDEA )
    在这里插入图片描述

  4. 如果在旧版本 idea 中重新创建项目,将 Initializr Service URL 选择为 https://start.aliyun.com/ ,也会报错,暂无法成功创建 Spring Boot 项目。
    在这里插入图片描述
    原因:可能是 IntelliJ IDEA 2018 版本比较旧,不支持当前阿里云 Spring Initializr 服务的某些特性或格式。还是建议安装新版本的 IntelliJ IDEA 。新版本的 IDEA 可能已经修复了与当前 Spring Initializr 服务兼容性的问题。

相关文章:

  • 【滑动窗口】长度最小的子数组|无重复字符的最长子串|最大连续1的个数 III|将 x 减到 0 的最小操作数
  • EPSON XV4001BC陀螺仪传感器汽车导航系统的应用
  • LabVIEW NV色心频率扫描
  • C#,图论与图算法,计算无向连通图中长度为n环的算法与源代码
  • 热插拔技术详解(中)
  • Python分析无人驾驶汽车在桂林市文旅行业推广的问卷
  • Java基础-IO流
  • neo4j使用详解(一、Linux安装)
  • 什么是Spring Boot
  • 【Greenhills】MULTI IDE-GHS最新版本Compiler 23.5.4的兼容性问题
  • 如何查看局域网内所有的ip和对应的mac地址
  • Django单表数据库操作
  • OpenSearch 2.x 版本文档部署 CSS 丢失的问题
  • 后端开发要不要转鸿蒙?
  • 在微信小程序中或UniApp中自定义tabbar实现毛玻璃高斯模糊效果
  • angular组件开发
  • Docker 笔记(2):Dockerfile
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • IDEA常用插件整理
  • Linux中的硬链接与软链接
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • python docx文档转html页面
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • vue总结
  • 一、python与pycharm的安装
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • - 转 Ext2.0 form使用实例
  • nb
  • ​批处理文件中的errorlevel用法
  • #1015 : KMP算法
  • #控制台大学课堂点名问题_课堂随机点名
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (一)插入排序
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)树状数组
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • @vue/cli脚手架
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [14]内置对象
  • [145] 二叉树的后序遍历 js
  • [C#]猫叫人醒老鼠跑 C#的委托及事件
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例
  • [C++]四种方式求解最大子序列求和问题
  • [C++提高编程](三):STL初识
  • [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE
  • [HDU]2161Primes