当前位置: 首页 > news >正文

【JavaEE】(12) 创建一个 Sring Boot 项目

一、Maven

1、什么是 Maven

        Maven 用于管理项目、管理依赖(通过 POM 文件配置各种各样的 jar 包)。

        在没有 Maven 之前,需要手动 jar 包导入项目。整个流程:从网上查 jar 包并下载到本地(或者叫同事发)>>手动导入 jar 包。

        并且为了让团队中的所有人使用的 jar 包版本相同(不同可能会引发一些问题,比如接口使用方法变更),就会在源代码(src)文件下增加 lib 文件存放所有的 jar 包,占用空间很大,这就会导致项目在团队内部传输的过程效率低

        在实际商业项目中,因项目庞大,使用的 jar 包很多,不免会产生依赖冲突(版本不一致)。所以当时程序员的第一个工作就是手动理清依赖关系,导入所有需要的依赖,排依赖

        而 Maven 只需配置 POM 文件,管理所有依赖,自动从仓库下载。还能在 IDEA 安装插件,自动检测到版本冲突。以及打包项目等操作,都能通过一句 maven 命令完成。

2、创建一个 Maven 项目

        注意:Maven 和 IDEA 没有任何关系,可以单独安装 Maven,使用 cmd 命令行执行操作(网上找安装教程,还需要配置环境变量)。只不过 IDEA 集成了 Maven,就不用单独安装 Maven 配置环境了。包括 JDK,如果单独使用 JDK 就需要配置环境变量,通过命令行执行命令。而我们是在 IDEA 中使用 JDK,它已经帮我们自动配置好它的环境了,我们直接用就行。

创建:

项目结构:

maven 命令:

打包:

3、依赖管理

3.1、配置依赖

        配置 POM 文件。

        仓库查询Maven Repository: Search/Browse/Explorehttps://mvnrepository.com/        搜索 mysql,获取 JDBC 驱动的配置代码:

        点击漏洞,查看详情:说明新的版本移动到了 mysql-connector-j。

        版本选择:

  • 指定版本。(例如后续,我们使用 Spring Boot 3.x 及以上,其最低要求 JDK 17)
  • 看团队用的版本。
  • 没有漏洞的。
  • 次新版本。(最新版不稳定,可能有坑)

        我选了一个用的人最多的:

        这段代码复制下来,粘贴到 POM:

        本地仓库多了两个 jar 包,一个是 jdbc 驱动,一个是其依赖的 jar 包 protobuf,会自动下载它的依赖(像以前的话,还要手动梳理依赖,然后一个个下载)。

        这段代码其实表示,这个 jar 包在中央仓库中的地址(查询仓库会比中央仓库滞后一点):

        中央仓库Central Repository:https://repo1.maven.org/maven2/        上面这个 jar 包在中央仓库的地址就是:

3.2、切换本地仓库的路径

        本地仓库就是本地存放 jar 包的位置:file>>settings>>搜索maven

        换位置:把这个默认路径下的 .m 文件复制到指定位置,在 IntelliJ IDEA 2022.1.4\plugins\maven\lib\maven3\conf 有一个 settings.xml,也复制到 .m 文件里面:

        改路径,C 盘里下载的 jar 包就可以删了,节省空间:

        中央仓库、本地仓库、项目之间的关系:

        有些 jar 包是公司内部用的,会传到私服,从私服下载,需要用户名、密码,可能 settings.xml 或者 pom.xml 里面有,大概长这样:

3.3、配置国内镜像源

        如果从中央仓库下载很慢,可以在 settings.xml 里设置国内镜像源(国内的服务器,中央仓库的复制,从网上找):

3.4、检查版本冲突的插件

        检查冲突的插件:

        如果我们不想下载某个 jar 包,比如我们用不到 jdbc 驱动 jar 包中依赖的 protobuf jar 包的部分,想排除 protobuf jar 包,设置 POM 文件:

二、Spring Boot

1、什么是 Spring Boot

        Spring Boot 是对 Spring(Spring Framework) 的进一步包装,另外还增加了其它功能,比 Spring 更好用。

2、安装 Spring Boot 插件

        专业版不需要安装插件,集成了 Sring Boot。社区版需要安装

        插件商城搜索 Sring Boot Helper,点击 homepage 进入插件下载页面(不要直接 Install,新版本要钱)。

        下载免费版,对应 IDEA 社区版 2021.1.1-2022.1.4(如果不是这些版本,卸载 IDEA,网上找教程,注意注册表也要卸载):

        安装好后,导入本地插件压缩包:

        安装好的插件不要更新:

        还有在线版的 Sring Boot:Spring Initializrhttps://start.spring.io/        跟 IDEA 上一样的,IDEA 就是从网页版导入的模板:

        然后就会把项目下载下来,导入(点击项目里的 POM)到 IDEA 就行,这种不需要下插件(插件只是用来创建 Spring Boot 项目的而已):

3、创建 Spring Boot 项目

        file>>new>>project:Sring Boot 3.X 版本对应 JDK 17,3.X 以下对应 JDK 8(我用的专业版)。国内镜像:https://start.aliyun.com/

        第一创建 Sring Boot 项目会很久,耐心等待,这个插件(用于把第三方的 jar 包也打包进去,跟程序在 IDEA 运行无关,跟 maven 打包有关)可能会有下载不下来的情况:

        我们需要配置国内镜像源,需要区分两种情况,我们需要配置的是 New Projects Stetup,每个项目都从国内镜像源下载:

        配置方法跟 Settings 一样:

        刷新,下载好后:

        如果是社区版,这里的 RELEASE 要删除,中央仓库没有这个地址(这个 parent 表示 spring boot 是基于此编写的):

        这是专业版,这一块就是社区版的 parent 包含的内容,作用就是 spring boot 帮我们理清了 sprint boot 需要的所有依赖,并且排包:

        点进去可以看到,列出了很多依赖:

        这里的测试代码是指开发人员写的(不是测试人员的工作),开发人员要写单元测试用例。这俩版本号没写,是跟 spring boot 一致的,代码能检测到。

        这里可以改文件性质:

        这也能改:

        写一个简单的代码启动项目:

        启动类里点击启动:

        这个程序会一直运行:

        打开浏览器访问:

4、什么是 Web 服务器

        Web 服务器就是对 http 协议进行了包装,不需要我们去实现包装请求/响应等操作,我们只需要把程序放到 Web 服务器运行即可。目前常用的 Web 服务器就是 Tomcat,由于 Sring Boot 内置了 Tomcat,所以我们不需要单独配置 Tomcat。Tomcat 的端口号是 8080,所以访问我们的程序的端口号也是 8080

        实际上,Tomcat 上可以运行多个服务(也可以不是 Spring Boot 框架的程序),Spring Boot 也可以不用 Tomcat 部署。但 Tomcat 是内置在 Spring Boot 中的,所以启动 Sring Boot 项目,本质是启动了 Tomcat,这个 Tomcat 只能部署这一个项目。因为只部署了一个项目,所以 context path 可以省略

5、常见的访问出错情况

        4 开头的一般是客户端错误(一般看浏览器 url 跟代码中注解映射的 path 一致不一致),5 开头的一般是服务器错误(一般看浏览器页面提示和 Tomcat 日志,倒着一段一段看)。

5.1、404

        404 表示资源不存在:

  • url 写错了

  • @RestController 注解写成了 @Controller

5.2、500

        服务器崩溃。

  • 程序存在异常,没有处理:

5.3、无法访问此网站

        服务器程序未启动:

http://www.dtcms.com/a/325359.html

相关文章:

  • 如何在直播APP中集成美颜SDK?美白滤镜功能开发全流程解析
  • Python笔记之`getattr`和`hasattr`用法详解
  • Vibe Coding 自然语言驱动 AI 编程方式
  • 5G NR NTN 在 PHY 层和 MAC 层实现 OAI
  • 第9节 大模型分布式推理核心挑战与解决方案
  • 代码管理工具——Git基本使用方法
  • 架构设计(15):AI时代的架构设计
  • 系统编程——信号通信
  • MySQL-日志
  • 第10节 大模型分布式推理典型场景实战与架构设计
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的多目标跟踪与行为分析优化(393)
  • 低代码开发实战案例,如何通过表单配置实现数据输入、数据存储和数据展示?
  • Docker-08.Docker基础-本地目录挂载
  • Camera open failed
  • Flutter SharedPreferences存储数据基本使用
  • Apollo平台下相机和激光雷达手眼联合标定
  • 面试题-----RabbitMQ
  • RabbitMQ 消息转换器详解
  • OV5640 相机开发流程
  • 闸机控制系统从设计到实现全解析:第 5 篇:RabbitMQ 消息队列与闸机通信设计
  • C语言:贪吃蛇游戏
  • MiniCPM-V 4.0开源,号称是手机上的GPT-4V
  • 41.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--网关集成Swagger
  • 量子计算:叩响金融定价革命的大门——期权定价的范式转移
  • 用Python实现Excel转PDF并去除Spire.XLS水印
  • glide缓存策略和缓存命中
  • 基于 JavaWeb+MySQL设计实现博客管理系统
  • [激光原理与应用-230]:物理学主要分支、研究对象、衍生技术及职业方向解析
  • 智慧零售的本质重构与技术创新:基于定制开发开源AI智能名片S2B2C商城小程序的实践路径
  • Redis应⽤-缓存与分布式锁