Spring Boot 入门学习

一、 Web应用开发概述

什么是Web应用

1. Web应用 (Web Application)是一种运行在Web服务器上的软件程序,由用户通过Web浏览器进行访问和交互。

2.Web应用与传统的桌面应用不同,它不需要在个人计算机上安装特定的软件,只需要一个的网页浏览器。

3.通过浏览器,用户可以在不同的设备和平台上使用,只要有网络连接即可。

前端开发

1.前端使用户直接互动的应用程序部分,即用户界面。在Web开发中,前端特指在浏览器中运行的部分,涵盖页面布局、设计和交互性功能。

2.常用的Web前端技术包括:
HTML:构建网页内容的结构。

CSS:设定网页的样式和外观。

JavaScript:赋予网页交互性。

3.前端开发者的职责包括创建用户友好的界面,确保应用在不同设备和浏览器上 的兼容性,并优化整体用户体验。

后端开发

1. 后端是在服务器上运行的应用程序部分,负责处理业务逻辑和数据操作,后端从数据库检索数据,并执行计算和逻辑处理,然后将结果传送至前端。

2. 常用的Web后端技术包括:

——编程语言:如Java、Python、Node.js、 PHP等。

——数据库:如MySQL、MongoDB等,用户数据存储。

——服务器:如Apache、Nginx、Tomcat等。

——框架:如Spring Boot(Java), Django (Python)等。

3. 后端开发者负责实现业务逻辑,保证数据安全性和完整性,并构建供前端使用的API  (应用程序接口)

全栈开发

1. 如果开发者即懂前端开发,也懂后端开发,可以称为全栈(Full-stack)开发。

2. 全栈开发者有能力构建整个应用程序,从用户界面到服务器和数据库。

3.全栈开发者可以参与项目的整个生命周期,从需求分析、设计、开发到部署和维护。

前后端分离

1. 前后端分离是现代Web开发的重要趋势。它在前端和后端之间划分了清晰界限。

2. 前端通过API与后端交互。前端发送API请求,后端处理这些请求并以JSON或XML格式返回数据,使得一个后端能够支持多个前端应用(如Web、移动、桌面应用)。

3. 前后端分离还允许不同的开发团队使用各自的技术栈进行开发,并实现独立部署。这种独立性使得前后端可以根据需要进行单独的扩展。

B/S架构与C/S架构

——C/S(Client/Server)构架也称作客户端/服务器架构。其中,服务器运行服务端程序,而客户端设备上安装客户端软件。服务端负责后台业务逻辑和数据处理,而客户端则处理前端界面和用户交互。

——C/S架构的主要优点是能充分利用客户端PC的处理能力,提高影响速度。然而,这也意味着需要考虑不同操作系统和硬件平台的兼容性,并且在应用更新时需要逐个更新客户端软件。

——B/S架构特别适用于Web应用程序,如社交媒体、在线购物和博客平台。这种构建允许用户通过Web浏览器访问服务器上的功能,无须在本地设备上安装任何应用程序。

B/S架构与C/S架构的区别

特点CS架构BS架构
部署方式需要在每个客户设备上安装应用程序只需使用Web浏览器访问
更新与维护需要为每个客户端更新软件更新主要在服务器端进行,用户总是访问的是最新版本
开发与兼容性需要考虑各种操作系统和硬件平台只需要考虑不同浏览器的兼容性
性能通常提供更好的性能和响应速度可能受到网络、服务器负载等的影响
可访问性需要在特定的设备上安装可以从任何地方通过Internet访问
界面丰富度可能提供更复杂和响应式的用户界面依赖于Web技术的限制,但现代框架已有所改进

B/S架构工作原理

在B/S架构中,前端和后端通过HTTP(超文本传输协议)通信,前端向后端发送请求以获取数据,后端从数据库检索数据,执行计算和逻辑处理,然后将结果传送至前端。

HTTP协议

1. HTTP是一种无状态的请求/响应协议,每个请求都是独立的,服务器不会“记住”之前的请求。

2. HTTP请求方法包括GET、POST、PUT、DELETE等,支持不同的操作。 HTTP响应包括状态代码,如200 OK、404 Not Found等,用于表示请求的结果。

3. 尽管HTTP本身是无状态的,但Web应用往往需要维护管理状态(例如,跟踪用户是否登录,他们的购物车内容等)。为了解决这个问题,Web开发者使用了一些技巧和工具,如cookies、URL参数、隐藏的表单字段和服务器端的session存储。

Session与Cookie

1. 用户在输入用户名密码提交给服务端,服务端验证通过后会创建一个session用于记录用户的相关信息。

2.创建session后,会把关联的session_id通过setCookie 添加到http响应头部中。客户端接收到从服务器端发来的Session ID后,会将其作为 Cookie 保存在本地。

3. 浏览器会自动发送被种下sessionid的cookie,后端接受后去存session的地方根据sessionid查找是否有此session,认证用户身份。

二、 Spring Boot 概述

Spring Boot介绍

1. Spring Boot是由Pivotal团队提供的基于Spring 的全新框架,旨在简化Spring 应用的初始搭建和开发过程。

2. Spring Boot是所有基于Spring 开发项目的起点。 

3. Spring Boot就是尽可能地简化应用开发的门槛,让应用开发、测试、部署变得更加简单。

Spring Boot特点

1. 遵循“约定优于配置”的原则,只需要很少的配置或使用默认的配置。

2. 能够使用内嵌的Tomcat 、Jetty服务器,不需要部署war文件。

3. 提供定制化的启动器Starters,简化Maven配置,开箱即用。

4.纯Java配置,没有代码生成,也不需要XML配置。

5. 提供了生产级的服务监控方案,如安全监控、应用监控、健康检测等。

Spring Boot与SSM

1. SSM是由三个独立的框架组合而成的,分别是Spring 、Spring MVC和MyBatis的缩写。这三个框架经常结合使用,构建Java Web应用程序:

Spring :用于依赖注入和事务管理。

Spring MVC:用于Web层,处理HTTP请求。

MyBatis:是一个持久层框架,用于与数据库交互。

2.  Spring Boot可以很好地与Spring MVC和MyBatis结合使用,但其目的是简化整个应用程序的配置和部署。

三、搭建开发环境

Spring Boot 3环境要求

1. Spring Boot 2.7是最后一个支持 JDK 8 版本,根据官方公告,Spring Boot 2.7.x会在2023年11月停止维护

2.未来能够获得官方免费维护的版本只有Spring Boot 3.0及以上版本,由于Spring Boot 3.x版本要求java 17作为最低版本,因此需要安装JDK 17 或者以上版本运行。

下载Java17

访问Oracle官方网站:

Java Downloads | Oracle

配置环境变量

新建JAVA_HOME环境,变量值为Java目录,如:D:\dev\jdk-17.0.8

配置环境变量

在"Path"变量中添加%JAVA_HOME%\bin

验证Java环境

在令提示符窗口,输入java-version并按Enter,可以看到安装的Java17版本的信息。

Apache Maven

Apache Maven是一个流行的Java项目管理和构建工具,可以对Java项目进行自动化的构建和依赖管理。

Maven的作用

1. 项目构建:提供标准的,跨平台的自动化构建项目的方式

2. 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突等问题。

3.统一开发结构:提供标准的,统一的项目开发结构,如下图所示:

下载Maven

1. 访问 Apache Maven的官方下载页面
https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/

2. 下载“Binary zip archive"(如apache-maven-3.6.1-bin.zip )。

3将压缩包直接到任意目录(注意不要使用中文路径)。

Maven仓库

运行Maven 的时候,Maven所需要的任何构建都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构建至本地仓库。

配置国内Maven镜像

maven默认连接的远程仓库位置并不在国内,因此有时候下载速度非常慢,可以配置一个国内站点镜像,可用于加速下载资源。

<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url>
</mirror>

IDEA开发工具

1. IntelliJ IDEA,通常简称为IDEA,是由JetBrains公司开发的一个流行的集成开发环境(IDE),主要用于Java 开发。

2.IntelliJ IDEA 有两个主要版本,Community Edition免费开源版本与Ultimate Edition商业版本。打开浏览器,访问IntelliJIDEA的官网: https://www.jetbrains.com/idea/

不知道怎么使用IDEA?一篇文章带你快速上手

不知道怎么使用IDEA?一篇文章带你快速上手_rider groovyscript-CSDN博客

配置IDEA的Maven环境

为了方便使用系统中配置的Maven环境,将系统中已经安装好的Maven集成到IDEA中。

四、编写Spring Boot 应用

创建Spring Boot项目

1. Spring Initializr是一个在线工具,用于快速生成一个新的Spring Boot项目:

https://start.spring.io/

2. 用户能够在其中选择所需的依赖项、项目元数据以及其他配置选项,然后生成一个压缩的项目包,可以直接下载并使用。

Spring Boot项目目录结构

1. src/main/java/:此目录包含项目的主要Java 源代码。

2.src/main/resources/:存放项目的资源文件,例如配置文件、国际化属性文件、SQL 脚本等。
src/test/: 此目录用于存放项目的测试代码和测试资源。

3. src/test/: 此目录用于存放项目的测试代码和测试资源。

4.pom.xml: Maven的配置文件,定义了项目的依赖、插件和其他设置。

5.  Application.java:这是Spring Boot应用程序的入口点。它通常包含@SpringBootApplication 注释,并包含main 方法来启动应用程序。

五、Spring Boot 系统配置

配置文件

1.Spring Boot 使用配置文件来配置和定制应用程序的行为

2.默认配置文件application.properties位于src/main/resources/目录中

3.application.properties使用属性键值对的方式配置应用程序属性,键值对之间使用“=”进行分隔,例如指定服务器端口:

server.port=8081

自定义属性配置

1. 在 Spring Boot中,配置通常来自两个主要来源:
系统配置指的是Spring Boot 提供的“开箱即用”的默认配置,这些配置主要控制框架和第三方库的行为,如启动和服务器配置server.port、数据库连接 spring.datasource、日志设置logging.level。
自定义配置通常用于应用程序特定的配置,这些配置不是框架或库提供的,而是为满足特定业务或功能需求而定义的,如与外部API交互的URL、超时时间、API 密钥、应用程序的版本号、默认语言等。

2. Spring Boot 中框架提供了@Value 和 @ConfigurationProperties 两个关键注解从配置文件中读取并注入属性值。

自定义属性配置

1. @Value 允许你直接将配置文件中的单个属性值注入到Spring bean 中的字段、方法参数或构造函数参数。
例如,@Value("${app.name}") 可以从配置文件中读取app.name 的值并将其注入到对应的Java 字段。
2. @ConfigurationProperties注解允许你将配置文件中的多个相关属性绑定到一个 Java bean,使得配置更加结构化。
例如,使用@ConfigurationProperties(prefix = "app") 可以将所有带有 app 前缀的属性绑定到一个 bean。

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

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

相关文章

深度解读概率与证据权重 -Probability and the Weighing of Evidence

以下是I.J.古德&#xff08;I.J. Good&#xff09;的经典著作 《概率与证据权衡》&#xff08;Probability and the Weighing of Evidence, 1950&#xff09; 的中文详细总结&#xff1a; 本文由「大千AI助手」原创发布&#xff0c;专注用真话讲AI&#xff0c;回归技术本质。拒…

跟着AI学习C#之项目实战-电商平台 Day6

&#x1f4c5; Day 6&#xff1a;后台管理系统开发&#xff08;Admin Panel&#xff09; ✅ 今日目标&#xff1a; 创建管理员页面布局实现商品管理&#xff08;CRUD&#xff09;实现订单管理&#xff08;查看、状态变更&#xff09;添加权限控制&#xff08;仅管理员可访问&…

使用OpcUaHelper在C# WinForms中连接OPC UA服务器并读取数据

使用OpcUaHelper在C# WinForms中连接OPC UA服务器并读取数据 下面是一个完整的示例&#xff0c;展示如何使用OpcUaHelper库在C# WinForms应用程序中连接OPC UA服务器并读取数据。 1. 准备工作 首先&#xff0c;确保你已经安装了OpcUaHelper NuGet包。可以通过NuGet包管理器控…

鸿蒙应用开发中的数据存储:SQLite与Preferences全面解析

在鸿蒙&#xff08;HarmonyOS&#xff09;应用开发中&#xff0c;数据存储是构建功能完整、用户体验良好的应用程序的关键环节。鸿蒙系统提供了多种数据存储解决方案&#xff0c;其中SQLite数据库和Preferences&#xff08;偏好设置&#xff09;是最常用的两种方式。本文将深入…

夏至之日,共赴实时 AI 之约:RTE Open Day@AGI Playground 2025 回顾

每年 RTE 开发者社区的重磅活动—— RTE Open Day &#xff0c;也在六月的 AGI Playground 现场开启今年的行程。这是 RTE Open Day 第五期现场&#xff0c;这期我们的关键词是 「Real-Time AI」 和 「Voice Agent」&#xff0c;不仅有来自社区的 16 个项目&#xff0c;还有两场…

Tomcat性能调优指南

文章目录 一、Tomcat性能调优概述为什么需要调优Tomcat&#xff1f; 二、Tomcat架构与性能关键点三、JVM调优1. 内存配置优化2. 垃圾回收优化3. 其他JVM优化参数 四、连接器(Connector)调优1. NIO vs APR/Native2. 高级NIO配置 五、线程池优化六、会话管理优化1. 会话超时配置2…

Swift 小技巧:用单边区间优雅处理模糊范围

进入正题之前先科普一下 Swift 区间的知识。 Swift 中的区间有两种类型&#xff1a;闭区间和半开区间。 闭区间&#xff1a;用 a...b 表示&#xff0c;包含 a 和 b。半开区间&#xff1a;用 a..<b 表示&#xff0c;包含 a 但不包含 b。 举个例子 想判断一个数字是否在 0 …

Tang Prime 20K板OV2640例程

准备用Tang Prime 20K开发板进行OV2640摄像头采集验证。 Tang Primer 20K是由开源硬件厂商SiPEED矽速科技推出&#xff0c;是一款以 GW2A-LV18PG256C8/I7 为主芯片的核心板&#xff0c;准备了 2 个扩展板&#xff0c;Dock 和 Lite。板卡包含有HDMI输出&#xff0c;DVP接口&…

基于Anaconda环境开发IntelliJ IDEA实用JSON转Java实体插件

在软件开发中&#xff0c;将JSON数据转换为Java实体类是常见需求。借助Anaconda环境强大的包管理能力与IntelliJ IDEA的插件开发体系&#xff0c;我们可以打造一款高效实用的JSON转Java实体插件&#xff0c;显著提升开发效率。下面将从需求分析、技术选型、开发实现到优化部署&…

idea运行到远程机器 和 idea远程JVM调试

一、idea运行到远程机器 适用场景&#xff0c;本地连接不上远程机器的部分组件&#xff0c;如&#xff1a;redis、数据库。 缺点&#xff1a;每次修改程序&#xff0c;会复制所有的 依赖和class 启动比较慢。 工作原理&#xff1a;远程机器和本机器&#xff0c;都会启动一个端口…

微信小程序接入腾讯云短信验证码流程

以下是针对 AA公司微信小程序接入腾讯云短信验证码 的 全流程操作指南&#xff0c;包含资质申请、签名/模板配置、代码对接的完整解决方案&#xff1a; 一、资质申请&#xff08;必须通过审核才能发短信&#xff09; 1️⃣ 进入资质管理页 路径&#xff1a;腾讯云控制台 → 短…

阿里云OSS文件上传完整实现方案

一、前言 阿里云对象存储服务(OSS)是一种海量、安全、低成本、高可靠的云存储服务。本文将详细介绍如何在Spring Boot项目中集成阿里云OSS实现文件上传功能。 二、准备工作 1. 获取OSS配置信息 在开始前&#xff0c;您需要准备以下OSS配置信息&#xff1a; endpoint: OSS服…

【软考--软件设计师】10.2 关系型数据库

10 模式分解 分解 模式分解:将一个关系模式分解为多个子模式 模式分解就是模式规范化的工具&#xff0c;模式分解使用无损连接和保持函数依赖来衡量模式分解后是否导致原有模式中部分信息丢失。 无损连接 保持函数依赖 11、事务管理 事务的ACID性质: (1)原子性(Atomicit…

python训练day44 预训练模型

预训练模型发展史 预训练模型的训练策略 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pyplot as plt# 设置中文字体支持 plt.rcParams["…

[论文阅读]MISSRce

论文title: MISSRec: Pre-training and Transferring Multi-modal Interest-aware Sequence Representation for Recommendation

Redis学习笔记——黑马点评 附近商铺到UV统计 完结

前言&#xff1a; 今天完结了Redis的所有实战篇。 学习收获&#xff1a; GEO数据结构&#xff1a; GEO就是Geolocation的简写形式&#xff0c;代表地理坐标。Redis在3.2版本中加入对Geo的支持&#xff0c;存储、管理和操作地理空间数据的特殊数据结构&#xff0c;它能高效处…

【客户端排查】mac电脑怎么查看客户端的实时运行日志

先退出客户端&#xff1b;打开访达里的应用程序&#xff1b; 打开【显示包内容】&#xff1b; 找到MacOS 双击里面的终端程序&#xff1b; 双击后&#xff0c;客户端会自动启动&#xff0c;且可以在终端中查看客户端的实时日志啦~

HarmonyOS NEXT仓颉开发语言实战案例:健身App

各位好&#xff0c;今日分享一个健身app的首页&#xff1a; 这个页面看起比之前的案例要稍微复杂一些&#xff0c;主要在于顶部部分&#xff0c;有重叠的背景&#xff0c;还有偏移的部分。重叠布局可以使用Stack容器实现&#xff0c;超出容器范围的偏移可以使用负数间距来实现&…

TreeMap源码分析 红黑树

今天尝试刨一下TreeMap的祖坟。 底层结构对比 先来看一下与HashMap、LinkedHashMap和TreeMap的对比&#xff0c;同时就当是复习一下&#xff1a; HashMap使用数组存储数据&#xff0c;并使用单向链表结构存储hash冲突数据&#xff0c;同一个冲突桶中数据量大的时候&#xff…

华为云Flexus+DeepSeek征文|基于Dify构建拍照识题智能学习助手

华为云FlexusDeepSeek征文&#xff5c;基于Dify构建拍照识题智能学习助手 一、构建拍照识题智能学习助手前言二、构建拍照识题智能学习助手环境2.1 基于FlexusX实例的Dify平台2.2 基于MaaS的模型API商用服务 三、构建拍照识题智能学习助手实战3.1 配置Dify环境3.2 配置Dify工具…