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 服务兼容性的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/471188.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

免费分享一套SpringBoot+Vue大学新生报到管理系统,帅呆了~~

大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue大学新生报到管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue大学新生报到管理系统 Java毕业设计_哔哩哔哩_bilibili【免费】SpringBootVue大学新生报到管理系统 Java毕…

2旧版本navicat更换颜色/护眼背景(利用regedit注册表编辑器 )

2navicat默认的背景颜色是白色的,新版本可以如图直接在工具选项里面设置,可以先检查一下,如果没有相关设置,如果没有再往后看解决方法 另外,还可以安装其他护眼软件,但 若是设置里没有这个选项,…

C语言经典算法-9

文章目录 其他经典例题跳转链接46.稀疏矩阵47.多维矩阵转一维矩阵48.上三角、下三角、对称矩阵49.奇数魔方阵50.4N 魔方阵51.2(2N1) 魔方阵 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三角形 4. 三色棋 5. 老鼠走迷官(一)6.…

RAPTOR:树结构的索引和检索系统的递归抽象处理

论文地址:https://arxiv.org/pdf/2401.18059.pdf 摘 要 增强型检索语言模型能够更好地适应世界状态的变化,并整合长尾知识,然而现有大多数方法仅能从检索语料库中检索到较短的连续文本片段,这限制了对整个文档上下文的整体理解。…

【MySQL】-update的两阶段提交

每一次的更新操作都需要写进磁盘,然后磁盘也要找到对应的那条记录,然后再更新,整个过程IO成本、查找成本都很高。 为解决该问题,优先写入日志,然后写入磁盘。WAL(Write-Ahead Logging)技术 1、…

点云配准:Open3D手动选点配准工具

写在前面 本文内容 Open3D手动选点配准工具;包含CMakeLists,cpp源码,编译脚本,运行结果可视化,可执行文件;源码、编译好的工具和脚本在这里下载: 本博客资源链接/share_noel/csdn/open3d/open3d…

SAP 配额修改 + 修改记录写入实现

前一周 写了文章 思考了SAP 修改记录写入的思考-CSDN博客 紧接着 小家伙 感染了支原体 反反复复 ,代码没有落地,今天终于落地了,下面把代码贴出来。 FUNCTION ZRFC_MM_QUOTA_BAPI. *"----------------------------------------------…

STM32 CubeMX使用介绍(含FreeRTOS生成)

文章目录 前言1. 简介1.1 什么是STM32CubeMX1.2 为什么会有STM32CubeMX的出现1.3 STM32CubeMX常用功能有哪些?1.4 官方资料下载地址 2. 下载和安装STM32CubeMX2.1 下载软件2.2 软件安装 3. 使用方式3.1 说明3.2 不同选择器介绍3.3 构建新的项目3.1 选择单片机的型号…

【spring】@DependsOn注注解学习

DependsOn介绍 DependsOn 是 Spring 框架中的一个注解,用于指定一个 bean 的依赖关系。当 Spring 容器初始化 bean 时,它会按照一定的顺序进行初始化。如果一个 bean 依赖于其他 bean,那么这个 bean 的初始化应该在依赖的 bean 之后进行。 …

SPSS k-均值聚类的 anova分析表解读

from&#xff1a;SPSS K均值聚类&#xff08;k-means&#xff09;和可视化方法 - CollinsLi - 博客园 (cnblogs.com) F值&#xff1a;变量对聚类的贡献 显著性水平&#xff1a;<0.05 则因子显著

SpringBoot + Vue项目(显示+删除+回显家居)

文章目录 1.显示家居信息1.com/sun/furn/controller/FurnController.java 添加方法2.postman测试3.src/views/HomeView.vue 修改el-table 并清空数据池tableData4.src/views/HomeView.vue 发送请求并取出数据1.方法池2.created阶段调用list方法3.结果展示 5.src/utils/request.…

蓝桥杯练习题——日期问题

1.日期差值 思路 分别计算从第一年到两个日期过了多少天&#xff0c;然后相减 #include<iostream> #include<cmath> using namespace std; int a[] {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int x1, x2;int f(int year, int month, int day){int res…

【爬虫】专栏文章索引

为了方便 快速定位 和 便于文章间的相互引用等 作为一个快速准确的导航工具 爬虫 目录&#xff1a; &#xff08;一&#xff09;web自动化和接口自动化 &#xff08;二&#xff09;实战-爬取Boss直聘信息数据

HTML静态网页成品作业(HTML+CSS)——非遗徽州木雕网页(6个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有6个页面。 二、作品演示 三、代…

python利用openpyxl库操作Excel来读取、修改、写入测试数据

一、openpyxl模块介绍 1、openpyxl是读写Excel的python库&#xff0c;是一个比较综合的工具&#xff0c;能够同时读取和修改Excel文档 2、openpyxl中有三个不同层次的类,每一个类都有各自的属性和方法&#xff1a; Workbook是一个excel工作表 Worksheet是工作表中的表…

Android Studio实现内容丰富的安卓医院医生招聘平台

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目编号120 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看公告 3.查看职位列表 4.收藏功能&#xff0c; 5.投递…

Java基础学习笔记二

Java的加载与执行 Java既是编译型语言又是解释型语言 question&#xff1a;为什么JVM可以跨平台执行 answer &#xff1a; Java虚拟机&#xff08;JVM&#xff09;之所以能够跨平台执行&#xff0c;是因为它在不同操作系统上提供了一个统一的运行环境&#xff0c;实现了Java程…

web前端之不一样的下拉菜单、不选中第一个元素的样式效果、伪类排除第一个元素、符号选择器、hover、not、first、child

MENU 效果图htmlcssJShtmlcss 效果图 htmlcssJS html <nav><ul><li class"navli"><h4>HTML5</h4><ul class"ulson"><li class"lison">HTML5</li></ul></li><li class"na…

Vue+Element-UI Table表格实现复选框单选效果(隐藏表头上的全选Checkbox)

实现效果 完整代码 <div class"box-pos"><el-table ref"table" :header-cell-style"{ color: #FFF, background: #333 }":cell-style"{ color: #FFF, background: #333 }" :data"grListData" style"width: 1…

Hack The Box-Devvortex

目录 信息收集 nmap whatweb WEB web信息收集 wfuzz 漏洞探索 漏洞发现 反弹shell 提权 get user hashcat get root 信息收集 nmap 端口信息收集┌──(root?ru)-[~/kali/hackthebox] └─# nmap -p- 10.10.11.242 --min-rate 10000 Starting Nmap 7…