【JavaEE进阶】第一个Spring Boot程序

news2024/12/22 11:52:23

目录

🌴安装插件

🎄Spring Boot介绍

🌳Spring Boot项目创建

🚩创建Spring Boot项目

🏀jar 包下载不下来问题

🚩启动项目

🌲目录介绍

🚩src文件

🚩target文件

🚩gitignore文件

🚩pom.xml文件

🏀标签

🏀标签 - 父工程

🏀3.3版本后新增标签

🏀标签

🏀标签

🚩SNAPSHOT

🎍代码介绍

🚩Web服务器

🚩请求流程分析

🚩访问出错

🏀404

🏀500

 🏀程序启动失败


🌴安装插件

若想安装自己硬盘上下载的插件:

File -> setting -> 选择小齿轮

安装完之后重启idea,若是安装的Spring Boot插件,创建项目时就可以看到Spring Initializr了

🎄Spring Boot介绍

在学习SpringBoot之前,我们先来认识⼀下Spring

我们看下Spring官⽅(Spring | Home)的介绍

可以看到,Spring让Java程序更加快速,简单和安全.Spring对于速度、简单性和⽣产⼒的关注使其成为 世界上最流⾏的Java框架。

Spring官⽅提供了很多开源的项⽬,覆盖范围从Web开发到⼤数据,Spring发展到了今天,已经形成了⾃ ⼰的⽣态圈.我们在开发时,也倾向于使⽤Spring官⽅提供的技术,来解决对应的问题.

Spring有两个含义:

  • 一个是Spring家族,也就是我们常说的Spring全家桶(在面试中所说的,以及在企业中所说的)
  • 还一个是指Spring Core,也就是Spring Framework原生框架,为Spring的核心,在Spring早期的时候,就只有Spring Framework,后续就是基于该框架上进行的一个升级,就有了Spring Boot,Spring Cloud等

这些项⽬都是基于SpringFramework来进⾏开发的,但是SpringFramework存在配置多,⼊⻔难的问 题,Spring也意识到了这个问题,为了简化开发者的使⽤,从⽽创造性的推出了SpringBoot,无配置

注意:在JavaEE进阶文章中,对于JDK来说,大多数都是用的第三方的东西,包括Spring。

接下来我们看下什么是SpringBoot.

Spring Boot的诞⽣是为了简化Spring程序(也就是Spring Framework)开发的. Spring Boot 翻译⼀下就是Spring脚⼿架,什么是脚⼿架呢?如下图所⽰:

盖房⼦的这个架⼦就是脚⼿架,脚⼿架的作⽤是砌筑砖墙,浇筑混凝⼟、⽅便墙⾯抹灰,装饰和粉刷 的,简单来说,就是使⽤脚⼿架可以更快速的盖房⼦

⽽SpringBoot就是Spring框架的脚⼿架,它是为了快速开发Spring框架⽽诞⽣的.

以前铺路是这样的:

改造之后的效率是这样的:

或者是这样的:

可以看到,每次技术的诞⽣和改进相⽐于之前的效率会有⼀个质的提升,⽽SpringBoot相⽐于 Spring 也是如此.

🌳Spring Boot项目创建

🚩创建Spring Boot项目

接下来我们来创建SpringBoot项⽬: File-> New->Project

修改信息:

点击下一步之后,选择Spring Boot的版本(带有SNAPSHOT的版本不要选!),其他版本随意

选择Spring Web,点击下一步

选择项目存放的路径(路径必须以项目名结尾),点击Finish即可

创建完成之后,左下角若有Load Maven Project提示,一定要点一下

创建完成之后,查看pom.xml文件,发现报错了

可以复制我所下载的包去这个网站上搜索一下(https://mvnrepository.com),发现根本没有3.4.0.RELEASE 这个版本,只有3.4.0,删除 .RELEASE重新刷新即可。

🏀jar 包下载不下来问题

1. 网络问题,尤其是校园网

2. 确认是否设置了国内源

【JavaEE进阶】关于Maven-CSDN博客 查看该文章即可

3. 确认包是否存在

https://mvnrepository.com 根据该网站进行搜索,如上图所示

4. 查看本地仓库

若该包确实存在,根据该包路径查看是否下载到本地仓库,可能会出现在下载过程中换网导致只下载了一半。

5. 多次刷新,尝试切换网络

若已经确定该包已经下载到本地仓库了,多次刷新,换时间刷新。

当我们查看该文件,里面有一些关于Maven相关的,此时已经加载完成了

🚩启动项目

项目启动:由于没有写代码,所有什么都看不到

自己写一个接口:

注意:注解括号中的路径与方法名可以不一样 

运行项目之后访问该接口:

🌲目录介绍

上述目录中,一些不太重要的文件就可以删掉,比如 .mvn mvnw mvnw.cmd HELP.md

🚩src文件

main文件下的java文件为源代码的入口文件(标识为蓝色,取消标识代码将运行出错),相当于大门,test文件下的java文件为测试源代码的入口文件(标识为绿色),测试代码是开发人员的自测代码,并不是由测试人员编写

自动生成的代码:SpringbootDemoApplication名称跟创建的项目名有关,并不需要关心;@SpringBootApplication注解标识的是一个启动注解,即当前这个类为启动类

自测代码:

resources目录(配置文件的根目录):static存放静态的文件,例如html,css,js;templates存放一些模板文件;application.properties配置文件(是一个标识的应用名称,目前没有用)

🚩target文件

其实没什么用,也可以删掉。它是一个class文件,我们说一个Java程序要运行的话,要编译成一个.class文件,则这个target文件中存放的都是class文件

🚩gitignore文件

上传git的时候,需要忽视的一些文件

🚩pom.xml文件

这是一个比较复杂的文件,Maven就是通过这一个pom文件来进行管理的,该文件用的格式为xml,xml的格式是由标签组成

🏀<dependencies>标签

上述dependencies标签中,添加了两个依赖,一个是springboot-starter-parent,这是与测试相关的;一个为springboot-starter-web,这是与web相关的,上述写一个接口,就是一个web(通过浏览器可以访问的就是web)。

当我们在创建项目时勾选上Spring Web就会自动添加这个两个依赖,在这勾选的越多,添加的依赖也越多;当我们忘记勾选时,也可以在dependencies标签中手动添加

我们说一个dependency标签为一个坐标,它里面分为三部分,为groupId(组织),artifactId(项目名),version(版本),但是上述dependency标签中只有前面两个,我们可根据上述artifactId去Maven仓库搜一下这个包,里面有很多版本。

那在dependency标签中用的是哪个版本呢?将鼠标移动到artifactId标签上即可

🏀<parent>标签 - 父工程

那为什么会使用3.4.0这个版本,不用其他版本,这个版本的决定是有pom.xml文件中的parent标签决定的,相当于在这里面版本已经决定好了,你不用在决定了。当然也可以自己决定(手动添加version,但是非常不建议!!!),所以我们说SpringBoot好用,就是因为它帮我们管理了版本,防止由于版本的不同发生冲突。

🏀3.3版本后新增标签

接下里查看3.3版本之后新增的内容,我们可以看到这是一个空的,这些可删可不删

来看看有值的样式

🏀<properties>标签

JDK版本

🏀<build>标签

构建时使用的插件,也是可删可不删,用于项目构建打包

🚩SNAPSHOT

上述在创建项目的时候,我们说不要选择带有SNAPSHOT的版本,因为它表示非稳定版本,可能会发生变化。版本分为SNAPSHOT和RELEASE(发布版本,稳定的)

在这个version中,对于版本的定义在实际工作中,看团队怎么写就怎么写,有的团队喜欢跟RELEASE,有的喜欢直接把SNAPSHOT删掉,如果是SNAPSHOT,那么这个包是可能会发生变化的,就有可能当前基于这个版本能运行成功,但是在上线的时候,可能会导致包发生变化,就使得程序运行不起来,或者是程序已经在线上运行了,但是用的是非稳定版本,非稳定版本表示可以修改,稳定版本是不能修改的,即使有bug也不能修改,只能通过升级版本的方式。

🎍代码介绍

🚩Web服务器

上述我们已经运行了一个springboot项目,那为什么是这个地址?

其中涉及到Web服务器,我们的程序之所以能够运行,其实是把这个项目发在了Web服务器上,这里的服务器就是Tomcat,Web服务器也就是Web容器,用来装web项目的,Web项目要想启动,就必须要使用web服务器。

浏览器和服务器两端进⾏数据交互,使⽤的就是HTTP协议

前⾯我们已经学习了HTTP协议,知道了HTTP协议就是HTTP客⼾端和HTTP服务器之间的交互数据 的格式.

Web服务器就是对HTTP协议进⾏封装,程序员不需要直接对协议进⾏操作(⾃⼰写代码去解析http协议 规则),让Web开发更加便捷,所以Web服务器也被称为WWW服务器, HTTP服务器,主要功能是提供⽹ 上信息浏览服务.

常⻅的Web服务器有:Apache,Nginx,IIS,Tomcat,Jboss等

SpringBoot 内置了Tomcat服务器,⽆需配置即可直接运⾏

Tocmat默认端⼝号是8080,所以我们程序访问时的端⼝号也是8080

🚩请求流程分析

浏览器输⼊URL之后,发起请求,就和服务器之间建⽴了连接

服务器:

浏览器:

  • 输⼊⽹址:http://127.0.0.1:8080/hello
  • 通过IP地址127.0.0.1定位到⽹络上的⼀台计算机,127.0.0.1就是本机 
  • 通过端⼝号8080找到计算机上对应的进程,也就是在本地计算机中找到正在运⾏的8080端⼝的程序
  • /hello是请求资源位置
  • 资源:对计算机⽽⾔资源就是数据
  • web资源:通过⽹络可以访问到的资源(通常是指存放在服务器上的数据)
  • http://127.0.0.1:8080/hello ,就是向本地计算机中的8080端⼝程序,获取资源位置 是/hello的数据
  • 8080端⼝程序,在服务器找/hello位置的资源数据,发给浏览器

服务器:

  • 接收到浏览器发送的信息(如:/hello)
  • 在服务器上找到/hello的资源
  • 把资源发送给浏览器

🚩访问出错

我们在访问的时候,浏览器就是客户端,我们的项目就是服务端,4xx一般是客户端发生错误,5xx一般是服务端发生错误。

🏀404

404 表⽰⽤⼾访问的资源不存在.⼤概率是URL的路径写的不正确

例如:将项目代码注解改一下

此时虽然是修改的服务端,但还是属于客户端url地址错误,访问的这个地址在服务端这边不存在

通过Fiddler观察Http请求

🏀500

服务器内部错误

查看错误日志,错误日志是一段一段的,从下往上看,先看最后一段的首行,若该行看不懂继续向上查看

 🏀程序启动失败

⼀般是Tomcat启动失败了

这种情况⼀般是服务未成功启动,也就是tomcat未启动,或者IP/端⼝写错

小结:

最开始学习Spring的时候,会遇到很多问题,更多是环境相关的问题. 我们不仅要学习Spring代码的基本写法,更重要的是学习排查错误的思路

总结:

Spring Boot 是为了快速开发Spring⽽诞⽣的,SpringBoot具备:

  • SpringBoot提供了启动添加依赖的功能,可以快速集成框架.
  • 内置web服务器,⽆需配置Tomcat等Web服务器,直接运⾏和部署程序.
  • 可以完全抛弃繁琐的XML,使⽤注解和配置的⽅式进⾏开发
  • ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况等特点.

Spring Boot 可使⽤Idea或⽹⻚创建,它的设计思想是约定⼤于配置,类上标注 @SpringBootApplication 就可以启动SpringBoot项⽬了. 比特就

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

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

相关文章

Oracle 中间件 Webcenter Portal服务器环境搭建

环境信息 服务器基本信息 如下表&#xff0c;本次安装总共使用2台服务器&#xff0c;具体信息如下&#xff1a; Webcenter1服务器 归类 SOA服务器 Ip Address 172.xx.xx.xx.xx HostName wcc01.xxxxxx.com Alias wccprd01 Webcenter2服务器 归类 OSB服务器 Ip Addr…

浅谈文生图Stable Diffusion(SD)相关模型基础

1.U-Net模型基础 1.基础概念 UNet模型是一种基于卷积神经网络的图像分割算法&#xff0c;它采用了U型的网络结构&#xff0c;由编码器&#xff08;下采样路径&#xff09;和解码器&#xff08;上采样路径&#xff09;两部分组成。 编码器负责提取输入图像的特征&#xff0c;…

【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析

目录 一、前言 二、Spring Boot 简介 三、Spring Boot 核心模块 四、Spring Boot 项目实战&#xff1a;构建一个简单的 RESTful API 1. 创建 Spring Boot 项目 2. 配置数据库 3. 创建实体类 4. 创建 JPA 仓库接口 5. 创建服务层 6. 创建控制器层 7. 测试 API 8. 运…

css 动画实现从中间到两边亮度逐渐变暗的流水灯效果

先看效果&#xff1a; 快结束效果 随着离中心点距离逐渐边远&#xff0c;亮度逐渐变暗 完整的视线代码如下&#xff1a; <template><div class"container"><div class"runner bottom to-right"></div><div class"runner …

k8s迁移——岁月云实战笔记

新系统使用rockylinux9.5&#xff0c;旧系统虚拟机装的是centos7 1 目标服务器 1.1 禁止swap swapoff -a vi /etc/fstab #/dev/mapper/rl-swap none swap defaults 0 0 #执行&#xff0c;swap一行都是0 free -h 1.2 关闭防火墙 只是为了减…

Vulnhub靶场Apache解析漏洞

一.apache_parsing 原理&#xff1a;Apache HTTPD ⽀持⼀个⽂件拥有多个后缀&#xff0c;并为不同后缀执⾏不同的指令。在Apache1.x/2.x中Apache 解析⽂件的规则是从右到左开始判断解析,如果后缀名为不可识别⽂件解析,就再往左判断。如 1.php.xxxxx 打开靶场 创建一个名为1.p…

《Java核心技术I》Swing中单选按钮

单选按钮 构造ButtonGroup类型对象。 将JRadioButton对象添加到按钮组中。 new JRadioButton("Small",false)&#xff0c;第二个参数是初始状态。 buttonGroup.getSelection().getActionCommand()获得当前选中的按钮动作命令。 选择字体大小案例 package swing…

在window环境下安装openssl生成钥私、证书和签名,nodejs利用express实现ssl的https访问和测试

在生成我们自己的 SSL 证书之前&#xff0c;让我们创建一个简单的 Express应用程序。 要创建一个新的 Express 项目&#xff0c;让我们创建一个名为node-ssl -server 的目录&#xff0c;用终端cmd中进入node-ssl-server目录。 cd node-ssl-server 然后初始化一个新的 npm 项目…

Webpack学习笔记(5)

1.拆分开发环境和生产环境配置 很多配置在开发环境和生产环境存在不一致的情况&#xff0c;比如开发环境没有必要设置缓存&#xff0c;生产环境需要设置公共路径等等。 2.公共路径 使用publicPath配置项&#xff0c;可以通过它指定应用程序中所有资源的基础路径。 webpack.…

桌面图形界面生成原理:从流水灯到电脑屏幕

桌面图形界面是我们在使用电脑时接触最多的一个部分。它的美观、简洁、易用都给我们的生活带来了极大的便利。但是&#xff0c;你是否想过&#xff0c;这样的界面是如何生成的呢&#xff1f;让我们从流水灯的原理开始&#xff0c;一步步揭开桌面图形界面生成的奥秘。 一、流水…

html+css网页设计 美食 百味美食4个页面

htmlcss网页设计 美食 百味美食4个页面 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#xf…

WPF DataTemplate 数据模板

DataTemplate 顾名思义&#xff0c;数据模板&#xff0c;在 wpf 中使用非常频繁。 它一般用在带有 DataTemplate 依赖属性的控件中&#xff0c;如 ContentControl、集合控件 ListBox、ItemsControl 、TabControls 等。 1. 非集合控件中使用 <UserControl.Resources>&l…

【CSS in Depth 2 精译_084】第 14 章:CSS 蒙版、形状与剪切概述 + 14.1:CSS 滤镜

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 14 章 蒙版、形状与剪切】 ✔️ 14.1 滤镜 ✔️ 14.1.1 滤镜的类型 ✔️14.1.2 背景滤镜 ✔️ 14.2 蒙版 文章目录 第 14 章 蒙版、形状与剪切 Masks, shapes, and…

excel 使用vlook up找出两列中不同的内容

当使用 VLOOKUP 函数时&#xff0c;您可以将其用于比较两列的内容。假设您要比较 A 列和 B 列的内容&#xff0c;并将结果显示在 C 列&#xff0c;您可以在 C1 单元格中输入以下公式&#xff1a; 这个公式将在 B 列中的每个单元格中查找是否存在于 A 列中。如果在 A 列中找不到…

java_章节作业

第1题 package com.hspedu.homework;/*** author:寰愬悏瓒&#xfffd;* date:2024/12/19 version:1.0*/ public class Homework01 {public static void main(String[] args) {//初始化Person对象数组&#xff0c;有3个Person对象&#xff1b;Person[] persons new Person[3];…

20241217使用M6000显卡在WIN10下跑whisper来识别中英文字幕

20241217使用M6000显卡在WIN10下跑whisper来识别中英文字幕 2024/12/17 17:21 缘起&#xff0c;最近需要识别法国电影《地下铁》的法语字幕&#xff0c;使用 字幕小工具V1.2【whisper套壳/GUI封装了】 无效。 那就是直接使用最原始的whisper来干了。 当你重装WIN10的时候&#…

Fiddler勾选https后google浏览器网页访问不可用

一、说明 最近电脑重新安装系统后&#xff0c;之前的所有工具都需要重新安装和配置&#xff0c;有个项目需要抓包https包查看一下请求的内容&#xff0c;通过Fiddler工具&#xff0c;但是开启后&#xff0c;发现https的无法抓取&#xff0c;同时google浏览器也不无法访问互联网…

OpenAI 12天发布会(12 Days of OpenAI)总结

在OpenAI的“12 Days of OpenAI”活动中&#xff0c;每一天都会发布新的功能或技术&#xff0c;展示公司在AI领域的最新进展。首先展示下全部功能发布完成后&#xff0c;现在ChatGPT的界面&#xff1a; 以下是每一天的简要概述及其意义&#xff1a; 第1天 - 完整版O1模型 今天…

LLaMA-Factory 单卡3080*2 deepspeed zero3 微调Qwen2.5-7B-Instruct

环境安装 git clone https://gitcode.com/gh_mirrors/ll/LLaMA-Factory.git 下载模型 pip install modelscope modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir /root/autodl-tmp/models/Qwen/Qwen2.5-7B-Instruct 微调 llamafactory-cli train \--st…

Vue3组件封装技巧与心得

摘要&#xff1a; 日常开发中&#xff0c;用Vue组件进行业务拆分&#xff0c;代码解耦是一个很好的选择&#xff1b; 今天就来分享一下我在使用Vue3进行组件封装的一些技巧和心得&#xff0c;希望能够帮助到大家&#xff1b; 1. 组件特性&#xff1a; 在Vue中组件是一个独立的…