创建一个SpringBoot项目

news2024/11/26 12:51:23

Spring的诞生是为了简化JAVA程序的开发的

快速开发Spring而诞生的

SpringBoot为了快速开发Spring而诞生的一个框架

1)什么是SpringBoot?为什么要学它?(重要)

Spring是包含了众多工具方法的IOC容器

SpringBoot就是Spring框架的脚手架,它的存在就是为了快速开发Spring而产生的一个框架

1)SpringBoot可以快速集成框架,SpringBoot在进行创建的时候,非常方便的添加依赖外部JAR包,直接打一个勾,这个框架就被集成进来了,在Spring或者Servlet时代,都要去中央仓库,这个国外的仓库访问非常慢,有时候还要验证,搜索依赖的关键字,会出来很多JAR包,你要选择版本;

1.1)在我们进行使用Servlet或者是Spring的时候,去Maven中央仓库搜索MYSQL,再去找MYSQL的Jar包,这个时候还会出现很多的结果,再去进行复制MYSQL某个正确版本底下的Dependency的XML到咱们的pom.xml里面,然后我们再去点击Maven的重新导入,这样我们才可以将一个Jar包添加到一个完整的项目里面,有时候还会失败;

1.2)但是我们有了SpringBoot之后就不用了它提供了启动添加依赖的功能,直接一勾,用于秒级集成于各种框架,中央仓库是一个国外的网站,有时候还要需要验证,Tomact(8.5),Servlet(3.1),版本号和JAR包不用在关心了,咱们的SpringBoot版本有一个与其他框架匹配的版本列表,SpringBoot所使用的jar包的适配版本时会自动设置注入的,版本号也不用管了,Spring还需要进行创建xml文件;

2)内置Tomact运行容器,我们无需进行配置外置Tomact等Web容器,直接运行和部署程序,运行SpringBoot启动项目的main方法(Spring Web),就可以直接运行项目了;

在Servlet时代不论是本地运行还是云服务器部署,我们都是先进行下载一个Toamct,下载之后进行解压,还要装SmartTomact,还要再SmartTomact中配置下载的Tomact的目录,再去配置项目,但是在SpringBoot中像直接运行main方法一样,就可以运行某一个项目了,况且SpringWEB项目直接通过就是main方法运行了,十分方便;

3)快速部署项目,我们无需外部Tomact容器即可以启动并运行项目,java -jar +jar包名字;

不需要放到固定的webapps目录了,一个命令直接启动;

4)SpringBoot可以完全的抛弃繁琐的XML,使用注解和配置的方式进行开发,因为使用XML的方式不方便进行调试,因为代码打点调试很方便之前Servlet时代还需要创建Dependecy标签,打成war包还需要额外写标签,就会很麻烦,之前Spring时代是使用包扫描的方式来进行注入的我去写配置文件的时候就会很麻烦注册一个类到Spring框架里面就需要写Beans标签,写法非常繁琐;

5)支持更多的监控的指标,更好的了解项目的运行情况;

1)Spring最早就是一个IOC容器,使用DI的方式来进行实现的,是为了加速Java开发的,但是随着Spring的发展,它的功能越来越大,但是他整个进行开发和执行操作的过程也是越来越臃肿,为了解决这种情况并改变配置麻烦,于是就有了SpringBoot,就是为了大家可以快速地使用Spring所进行创建的一个框架

2)咱们可以使用一些组件,实现开发环境和生产环境的一个脱离:

比如说lombok的一个使用,只有在编译之前有用,编译的之后啥用没有,打包的时候,就可以把lombok直接舍弃掉,生产的包和我本地运行的一个包,完全是两个不同的包;

SpringBoot的缺点:

6)但是创建SpringBoot项目的时候,会进行拉取SpringBoot的一个jar包,拉取对应版本的一个个工程目录,但是拉取的这个工程目录是国外网站的,在某些情况,某些网络状态可能创建SpringBoot项目不成功,当然还可以配置阿里云的源;

7)SpringBoot的版本升级太快了;

8)约定大于配置,如果你不按照固定的约定写代码,就会报错,对初学者不太友好;

2)进行创建一个SpringBoot项目 

1)使用Idea开发工具直接进行创建,先在Idea中的File中的Settings里面的Plugins再点击MarketPlace里面下载Spring Assistant插件,还可以下载Spring Boot Assistant

2)如果说有的时候Idea的插件安装不了的话,我们可以直接搜索关键字idea plugins,这是在在线安装插件的网址;

3)通过Spring官方提供的Web地址进行创建;

1)当我们进行点击Spring Assistant的时候,上面使用的Project SDK使用JDK8

2)在这里面我们可以直接点击next就可以了,这里面的custom可以使用自定义的地址

http://start.spring.io,默认是国外的地址,还可以拉取阿里云的地址,但是他的默认版本是比较低的;

Idea创建Spring项目

创建工程目录(国外网站)+下载jar包(在国外下载)

1)Group Id:表示公司Id,组织id,根据这个id可以定位到某一家公司,域名的倒写;

2)Artifact Id:表示产品Id项目Id(随便写),通过这两个属性可以在网络上定位到一个公司唯一的框架,因为一家公司有很多产品;

3)Version:版本号,一个产品可能发出多个版本;

4)ProjectType:基于打包工具的类型,我们选择MavenProject,是依赖于Pom.Xml,GradleProject不使用XML还有多线程打包;

5)language:语言选择,选择Java;

6)Packaging:打包格式,jar包,不改,war(web项目+jar),jar(一系列class字节码的压缩包)

因为war包通常要放在web容器来运行的,而我们的jar包是可以单独运行的,jar包内部内置Toamct容器;

7)java version:jdk的版本号(JDK8),一定要选择一个本地安装的JAVA版本

8)ProjectName:项目名称

9)Project description:项目描述

10)Package name:包的根路径,项目默认包,将咱们SpringBoot的启动文件放在这个包底下

点击Next之后:在这里进行添加外部Jar包

 用法:直接搜索MYSQL(不用Pom.xml了)

1)选择SpringBoot的版本号(Spring Boot version):后面没有任何符号任何参数任何标志的版本,才是咱们要用的版本,他才是发布版,才是稳定的版本,我们选择一个次新的发布版本就可以的,相对比较稳定,更新频率没有那么快,防止升级版本比较快;

2)左边选择Spring DevTools热部署,每一次修改代码就不用重新启动SpringBoot,重新生成target目录,选择Lombok,生成Get和Set方法,再添加一个SpringWeb,支持咱们的HTTP协议,就会发送一个请求到后端代码;

最终我们填写项目名称和以及确认一下本地保存路径,下面的都不用动 

但是如果说上面的配置出现了问题,我们就要想办法解决:

打开进行选中 

1)检查配置文件是否配置了国内源,根据路径看看是否存在settings.xml,没有就拷贝,打开是否有mirrors标签,如果没有就进行引入,最后在项目中点击重新下载导入,这个settings.xml是不能写错的,这样才会走阿里云的jar包,如果经过上面的步骤还是不行,我们就直接打开Local repository目录,所有文件(本地jar包)全部删除,重新下载;

2)咱们要进行运行加上@SpringBootApplication的启动类注解修饰的类,里面有main方法,就可以启动咱们的SpringBoot项目了,但是图标是蓝色,最终显示JVM运行的时间就可以了

3)阿里云版本选择带英文的第二版本

通过网页版本来进行创建Spring项目:

先进行访问网址:https://start.spring.io/,这是一个官方地址,这个是和咱们刚才进行选择的idea的选项是差不多的(也是国外)

1)我们需要在这里面选择外部依赖的jar包,选择完成之后,直接点击GENERATE,直接就会进行打包进行下载,解压缩并用idea打开,本地有备份,直接进行压缩在创建一个目录;

2)创建SpringBoot项目之后,删除这里面无用的文件,.mvn,HELP.md,mvnw,mvnw.cmd,gitigone;

3)我们经过网页版创建之后,点击生成按钮会下载一个SpringBoot的zip包,解压之后的zip包目录和正常的SpringBoot的项目是一样的,我们使用IDEA打开之后,SpringBoot项目就算创建成功了,网页版的zip文件可以重复使用多次,因为之前已经放在本地了,十分的方便,但是SpringBoot版本号是永远固定的;

4)在我们创建SpringBoot项目的时候,一开始会有一个Choose Spring Initializr server的

会根据服务器提供的一个工程路径来生成你的目录的,目标地址是在外国网站 

5)使用国内源来创建一个SpringBoot项目:正常版本比官网版本少两年,况且我们在选择SpringBoot版本的时候选择带有replace的,下面的那一个2.3.7的版本就可以

 

下载SpringTools,这样才能够在application.properties写代码的时候有代码提示;

SRC:存放和程序员相关的东西

1)Java目录下的包都是存放java源码的;

2)resource项目资源文件:一个资源文件夹,存放配置文件,静态资源和静态文件,存放html/vue/js/css/img/springboot项目的配置文件

static里面前端文件(html,css,js)

templates里面存放的是通用的模板文件资源,是固定的资源,打开一个网页,不管网页内容如何变化,一些东西都是始终固定不变的,这就是固定资源;

3)application.properties,表示项目的配置文件抛弃XML,其中上面的static和templates两个目录里面存放的是不同的文件,static里面存放的是静态文件创建完成之后不变的文件,比如说图片CSS,templates放模板文件

4)test里面就是进行存放单元测试的文件,我们进行创建Springboot的时候会自动地引入单元测试的框架(依赖)

5)target就是一个IDEA自动生成的目录,是一个编译文件,里面是编译好的代码,JVM在进行运行的时候运行的不是java文件,而是运行的target文件,有时候我们发现我们自己写的代码没有生效,可能是target进行了缓存

6)pom.xml,maven项目必须要有的配置文件,里面存放的是里面会进行存放当前项目的所有的外部引用的jar包;

7)DemoApplication是启动文件,被标识了@SpringBootApplication的类就叫做启动类

8)SpringBoot有一个核心设计思想:虽然没有加配置文件,约定大于配置,所有需要Spring Boot扫描并需要进行加载的类或者包必须和@SpringBootApplication放在同一个目录下,必须是demo包子类,那么在SpringBoot进行启动的时候就会自动扫描并加载相应的类,并看看他们有没有加5大类注解,虽然不需要进行配置了,但是你必须遵循我的规范,如果你不进行遵循,不会进行任何报错,代码不会出现任何问题,也不会有任何提示,demo下面进行创建一个包也是可以的里面也可以写一些类,这就是SpringBoot托管对象的方式;

9)但是对于Spring来说,让这个类被托管给Spring,我们需要在Resources下引入XML文件,指定扫描路径或者扫描地址,只有这个包底下的加了五大类注解的类才会被Spring扫描和加载

10)target目录:因为JVM运行项目基本上都是通过target目录来去运行的,target目录就是相当于是你把JAVA的源码编译生成了字节码,本质上JVM运行的是target目录,写完的代码或者修改的代码之后target目录没有发生改变,所以我们需要把target目录删除掉并点击代码重新运行,我们的热部署IDEA感知你的代码发生了变化,会自动地帮我们进行重启SpringBoot,就会自动的把我们的JAVA源码生成target,这时候写的代码就可以生效了;

@Controller
public class JavaController {
    @RequestMapping("/java100")//既可以加到类上面,也是可以加到方法上面,不要出现大小写
    @ResponseBody//表示给浏览器返回一个接口而不是页面,
返回一个非静态页面的数据,否则会找name+"是我"的这样一个页面名
    public String run(String name)
    {
        return name+"是我";
    }
}
启动SpringBoot,直接在电脑上面输入localhost:8080/java100?name=hhh就可以访问网页了

1)在类上面加@RequestMapping配置路由表示所有访问到类上面的方法所要经历的第一级路径,@ResponseBody:表示的是返回的是非静态页面的数据,如果不加注解,那么SpringBoot会寻找一个页面,名字叫做你的返回值的页面,加上了这个注解SpringBoot就知道了你返回的是一个数据而不是一个页面;

2)在方法上面加上@RequestMapping配置路由就表示所有访问到该方法上面的路由,可以只有一级路径就可以访问到这个方法;

3)路由名字配置全部都是小写,不要出现大写,linux对于大小写敏感,就很有可能导致程序在linux和本地上运行不一致,况且之前MYSQL就建议说表中的字段名字全部使用小写,分隔符全部使用下划线就可以了;

上面的第三个按钮是不换行,SpringBoot项目内部已经内置了Tomact,Tomact本身也是一个4)开源的HTTP服务器组件,SpringBoot相当于是说把Tomact运行的一些核心包打成一个jar包,然后存放到自己项目里面了,在SpringBoot项目启动的时候,来调用Tomact的一些运行执行逻辑,来执行我自己的一些jar包了,所以SpringBoot不需要外置的Tomact容器;

1)需要在将对象托管到Spring或者SpringBoot的对象必须要放在SpringBoot启动类或者是子路径中,否则不能被框架识别,也就不能成功的托管到Spring中,即使你加上了五大类注解,也是仍然无法在SpingIOC容器里面进行访问的,存都存不进去;

2)SpringBoot配置是比较少的,但是SpringBoot的设计思想是约定大于配置,但是必须要了解约定;

 

1)从上面的代码来看,Spring项目里面也是要配置Bean的扫描路径的,实现将Bean注册到Spring容器里面,或者配置包扫描路径的;

2)但是SpringBoot路径下面,所有和SpringBoot启动类同级或者子目录的加上五大类注解的类就可以注册到SpringIOC容器里面,之前是 Spring 其实是⼀个普通Java项⽬

办法直接和浏览器进⾏互动;

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

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

相关文章

软考A计划-系统架构师-官方考试指定教程-(2/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

chatgpt赋能python:Python屏幕输入介绍:了解命令行输入的基本知识

Python屏幕输入介绍:了解命令行输入的基本知识 Python是一种使用广泛的编程语言,用于编写各种类型的应用程序,包括图形用户界面应用程序和基于命令行的应用程序。对于基于命令行的应用程序来说,屏幕输入非常重要。本文将介绍Pyth…

Object.assign用法

Object.assign用法 Object.assign是什么? 首先了解下Object.assign()是什么。我们先看看ES6官方文档是怎么介绍的? Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。简单来说,就是Obj…

stm32超声波测距代码

操作思路: 初始化时将trig和echo端口都置低,首先向给trig 发送至少10 us的高电平脉冲(模块自动向外发送8个40K的方波),然后等待,捕捉 echo 端输出上升沿,捕捉到上升沿的同时,打开定时…

(附源码)python音乐电台推荐系统的设计与实现 毕业设计 301210

音乐电台推荐系统 摘 要 随着人类向信息社会的不断迈进,风起云涌的信息时代正掀起一次新的革命,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的音乐电台推荐系统来管理音乐电台信息&#xff0…

OpenAI 接口文档-(中文版)-(一)

介绍 Introduction 您可以通过来自任何语言的 HTTP 请求、我们的官方 Python 绑定、我们的官方 Node.js 库或社区维护的库与 API 进行交互。 若要安装官方 Python 绑定,请运行以下命令: pip install openai 要安装官方的 Node.js 库,请在 No…

chatgpt赋能python:Python将空格改为换行符

Python将空格改为换行符 在Python编程中,经常需要对字符串进行处理,其中包括将空格替换为换行符。这篇文章将会介绍如何使用Python来实现这个目标,并分享一些关于字符串处理的技巧。 为什么要将空格改为换行符 将空格改为换行符可以让文本…

chatgpt赋能python:Python屏蔽一段代码

Python屏蔽一段代码 在Python编程中,有时我们需要屏蔽一段代码以便于调试或者测试。在很多情况下,我们可能不想删除这段代码,因为需要在将来的某个时间再次使用它。为了解决这个问题,我们可以使用Python中的注释语句或者条件语句…

Vue3中集成Unreal 5.2 像素流(Pixel Streaming插件)

目录 1. 创建一个Unreal项目2. 启用Pixel Streaming插件3. 下载Unreal 5.2对应的Pixel Streaming Infrastructure4. 创建一个Vue项目5. 推流方式一:使用Unreal Engine 5.26. 推流方式二:打包项目参考资源: 1. 创建一个Unreal项目 默认大家都…

机器人的免费使用方法

目录 一、机器人是什么? 二、机器人免费使用的方法: 第一点:电脑端 第二点:手机端 三、结语: 一、机器人是什么? 博主理解:方便生活,比Siri更加高级,能够智能的对我们…

chatgpt赋能python:Python就业前景分析

Python就业前景分析 Python已成为全球最流行的编程语言之一,因其易学、易用、高效、可扩展性强等特点,Python在各个领域都发挥着重要作用。Python的发展和应用迅猛,拥有Python编程经验的工程师在各个领域都面临着广泛的就业机会。 Python的…

推荐一个Edge浏览器中的一个好用问答插件。

目录 ChatGPT介绍:一、ChatGPT是什么?二、ChatGPT发展:三、ChatGPT 优点:四、Edge浏览器插件五、结语: ChatGPT介绍: 一、ChatGPT是什么? ChatGPT 是一个基于语言模型 GPT-3.5 的聊天机器人,ChatGPT模型是Instruct GPT的姊妹模型(siblingmodel&#x…

Sql Server 自动备份

Sql Server 自动备份 文章目录 Sql Server 自动备份1. 打开SQL Server,在管理下找到”维护计划”,右键点击”维护计划向导”,如图;2. 再次点击维护计划向导3. 在选择维护任务下勾选”备份数据库”、”清楚维护任务”4.选择需要备份…

ChatGPT应用于软件测试中的切入口(干货!)

以上均为本人原创,转载请说明出处,谢谢! 如果您觉得这篇文章还不错的话,请点击关注,转发,再看; 全是干货,话不多说 开搞! 1. 测试想法生成器 可以使用ChatGPT技术&…

宝塔反代教程+国内服务器访问openai api接口+502 Bad Gateway问题解决!

前言 宝塔反代教程国内服务器访问openai api接口502 Bad Gateway问题解决! 此方法最简单快捷,没有复杂步骤,不容易出错,即最简单,零代码、零部署的方法。 实现前提 一台海外VPSOpenAI官方的API_KEYChatGPT网站系统源码 ChatGP…

手机上谷歌的方法有哪些

google的方法 一般情况下,我们打开谷歌都是提示无法显示页面的,如图 先百度搜索下载一个能切换IP地址的软件 下载压缩包客户端到桌面上(没安装winRAR的童鞋请安装一下) 把客户端解压到桌面,双击里面的exe文件 输入注册好的账户和密码&#xf…

Spring项目启动报错java.lang.NoClassDefFoundError : javax/xml/soap/SOAPException

文章目录 1.背景2.原因3.解决办法4.参考资料 1.背景 今天,在新设备上启动一个之前的项目的时候,发现启动不了了,报错 java.lang.NoClassDefFoundError : javax/xml/soap/SOAPException2.原因 网上查询了一下,大概的原因就是因为…

bert预训练梳理

BERT (Bidirectional Encoder Representation Transformers) 是在2018年由Google AI 团队发布的,虽然在此前刚发布不久的ELMo模型已经相比过去带来了很大的改善,但是BERT在各主流任务上取得的成绩仍然是一个质的飞跃。可以说,此后2-3年陆续出…

线程的start方法剖析

线程的start方法剖析 public synchronized void start() {if (threadStatus!0)throw new IllegalThreadStateException();group.add(this);boolean started false;try {start0();started true;} finally {try {if (!started){group.threadStartFailed…

javascript基础三十一:web常见的攻击方式有哪些?如何防御?

一、是什么 Web攻击(WebAttack)是针对用户上网行为或网站服务器等设备进行攻击的行为 如植入恶意代码,修改网站权限,获取网站用户隐私信息等等 Web应用程序的安全性是任何基于Web业务的重要组成部分 确保Web应用程序安全十分重…