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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓面试题多线程36-40

36. 请问什么是锁消除和锁粗化?(1)锁消除 所消除就是虚拟机根据一个对象是否真正存在同步情况,若不存在同步情况,则对该对象的访问无需经过加锁解锁的操作。 比如StringBuffer的append方法,因为append方法需要判断对象是否被占用,而如果代码不存在锁竞争,那么这部分的性…

Cesium:按行列绘制3DTiles的等分线

作者:CSDN @ _乐多_ 本文将介绍如何使用 Cesium 引擎根据模型的中心坐标,半轴信息,绘制 3DTiles 对象的外包盒等分线。 外包盒是一个定向包围盒(Oriented Bounding Box),它由一个中心点(center)和一个包含半轴(halfAxes)组成。半轴由一个3x3的矩阵表示,这个矩阵是…

算法第三十一天-区域和检索【数组不可变】

区域和检索-数组不可变 题目要求 解题思路 为方便描述,把 n u m s nums nums 记作 a a a。 对于数组 a a a,定义它的前缀和 s [ 0 ] 0 s [ 1 ] a [ 0 ] s [ 2 ] a [ 0 ] a [ 1 ] ⋮ s [ i ] a [ 0 ] a [ 1 ] ⋯ a [ i − 1 ] ∑ j 0 i −…

matplotlib使用总结1

matplotlib 是一个用于创建静态、动态和交云图的 Python 绘图库。它可以用于 Python 脚本、Python 和 IPython shell、Jupyter 笔记本、web 应用服务器以及四个图形用户界面工具包中。matplotlib 尝试让简单的事情更简单,让困难的事情成为可能。你可以生成线图、柱状…

借记卡年费和小额账户管理费,以及换卡面不换号

文章目录 年费和小额账户管理费减免政策:每家银行均可有一张借记卡享受双免政策减免政策:代发工资、低保、社保、医保、失业保险、养老金、退休金、住房公积金等账户减免政策:二、三类电子账户一类卡、二类卡和三类卡二、三类电子账户不收取年…

Rust字符串深入理解

一、概述 Rust是一种系统级语言,进行操作系统等底层应用开发,同时又具合理的抽象处理能力。在进行Rust编程时,字符串处理是程序员经常碰到的工作。本文深入解析Rust语言中字符串的使用,包括 static string,String与&a…

LeetCode 2578.最小和分割

给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足: num1 和 num2 直接连起来,得到 num 各数位的一个排列。 换句话说,num1 和 num2 中所有数字出现的次数之和等于 num 中所有数字出现的次数。 num…

x86 32 64 Arm这些听过但不懂,都是什么?是架构还是系统?一文梳理

x86 听过吗?64位操作系统知道吧 和x86什么关系32和64都是什么东西?曾经的我也一头雾水,今天我才来整理一下,惭愧惭愧!今天带着沉重的心情来梳理一下学习内容吧 如果你很熟悉很了解计算机的话,应该知道&…

深度分析:社科赛斯——穿越市场周期二十二年的考研机构

近日,一份由有关部门发布的统计数据引发了广泛关注:在中国,中小企业的平均寿命仅有3.7年,而小微企业更是不到3年。这一数字凸显了中小企业所面临的挑战与困境。然而,在这个充满风险与变化的商业环境中,社科…

pytorch 鲜见操作

对两个 tensor 做逻辑运算,比如 & (与) import torch# 定义两个张量 tensor_a torch.tensor([1, 0, 1, 0], dtypetorch.bool) tensor_b torch.tensor([1, 1, 0, 0], dtypetorch.bool)# 执行逻辑与操作 result tensor_a & tensor_bprint(result)结果输出…

U-Net代码复现–train.py

本文记录自己的学习过程,内容包括: 代码解读:Pytorch-UNet 深度学习编程基础:Pytorch-深度学习(新手友好) UNet论文解读:医学图像分割:U_Net 论文阅读 数据:https://hack…

中霖教育:二级建造师证书好考吗?

在建筑行业,二级建造师资格认证相较于一级建造师资格,难度会低一些。考试科目共有三科,考生需要在连续两个年度内通过所有科目的考试才为通过。 对于具备建筑相关基础和实践经验的考生来说,二级建造师的考试难度会低一些。根据往…

云扩展要求(云租户)

层面控制点四级三级二级安全 区域 边界访问控制应在虚拟化网络边界部署访问控制机制,并设置访问控制规则;应在虚拟化网络边界部署访问控制机制,并设置访问控制规则;应在虚拟化网络边界部署访问控制机制,并设置访问控制…

30天拿下Rust之错误处理

概述 在软件开发领域,对错误的妥善处理是保证程序稳定性和健壮性的重要环节。Rust作为一种系统级编程语言,以其对内存安全和所有权的独特设计而著称,其错误处理机制同样体现了Rust的严谨与实用。在Rust中,错误处理通常分为两大类&…

KUKA机器人自动回原点程序

一、创建全局变量点 创建两个全局变量分别用于储存机器人的笛卡尔姿态与关节角姿态。 打开System文件夹中的config文件创建全局变量的点位。 在USER GROBALS用户自定义变量Userdefined variables下创建一个E6POS类型的点位,一个E6AXIS类型的点位。 二、创建回原点…

webRtc麦克风摄像头检测

最近在做webRtc相关音视频项目&#xff0c;碰到了很多用户不知道自己设备是否被支持发起webRtc&#xff0c;所以特意总结相关实用方法&#xff1b; HTML /*id方便一会把媒体流赋值过去, autoPlay: 自动播放 */ <audio id"devDetectionMicroRef" autoPlay><…

基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍)

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

经典面试智力题总结

常见面试智力题总结 本部分主要是笔者在练习常见面试智力题所做的笔记&#xff0c;如果出现错误&#xff0c;希望大家指出&#xff01; 常见智力题 时针与分针夹角度数问题&#xff1f; 分析&#xff1a; 当时间为 m 点 n 分时&#xff0c;其时针与分针夹角的度数为多少&…

React状态管理Mobx

1 https://zh.mobx.js.org/README.html 2 https://juejin.cn/post/7046710251382374413 3 https://cn.mobx.js.org/refguide/observable.html ​​mobx入门基础教程-慕课网​​ ​​Mobx学习 - 掘金​​ 十分钟入门 MobX & React ​​十分钟入门 MobX & React​​…

警惕!On Hold被踢,2本1区,5本Springer旗下,共8本SCI/SSCI被剔除!

毕业推荐 SSCI&#xff08;ABS一星&#xff09; • 社科类&#xff0c;3.0-4.0&#xff0c;JCR2区&#xff0c;中科院3区 • 13天录用&#xff0c;28天见刊&#xff0c;13天检索 SCIE&#xff1a; • 计算机类&#xff0c;6.5-7.0&#xff0c;JCR1区&#xff0c;中科院2区…