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

Spring P1 | 创建你的第一个Spring MVC项目(IDEA图文详解版,社区版专业版都有~)

提要

在正式开始之前,大家可以先检查一下自己的IDEA是什么版本的,这里我们提供两种版本的讲解,社区版(带有Community字样的)以及专业版(带有Ultimate字样的),大家根据自己IDEA的版本自行选择即可

注意!!无论你是社区版还是专业版,请一定要先阅读Maven篇完成了解Maven,配置国内源,当然,如果已经配置过了则可以直接去看自己对应的版本~~

Maven

什么是Maven?

我们所谓的Maven,其实就是一个管理依赖的工具,可以直接通过pox.xml文件的配置来获取jar包就不用像我们使用Servlet时那样还要自己去下载对应的jar包并手动通过IDEA来添加

创建我们的第一个Maven项目[基于社区版]

此处我们并不会为大家讲解从0开始的Maven配置,因为IDEA中已经集成了Maven环境,所以我们此处是直接在IDEA中创建的

File -> New -> Project

在创建新项目的界面点击Maven

修改好自己项目的名称以及路径,注意名称的对应

创建成功

Maven核心功能

项目构建

Maven为我们提供了一些命令使得我们可以自动化地构建项目

在右侧我们展开Maven,在lifecycle,即它的生命周期下面就可以看到Maven为我们提供的一些命令,比如,我们点击package,那么Maven就会开始为我们打包项目

我们可以看到,此时就成功打包好了,并且IDEA还告诉了我们包所在的位置

在对应位置下我们也真的成功找到了对应的jar包

这就是Maven它搭建项目的作用,还有其它各种命令大家可以自行探索一下

依赖管理

我们在文章开始时就提到了,Maven是一个项目管理工具,通过pom.xml文件的配置获取jar包,而不用手动去添加jar包,而获取jar包这个过程我们就称之为依赖,想要添加依赖,只需要在pom.xml文件中添加如下代码即可

    <dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency></dependencies>

mysql-connector-java-8.0.30.jar为例 ,输入上述代码,刷新Maven即可,无需再手动在IDEA中配置

Maven仓库

事实上,Maven引入依赖是从Maven仓库中根据dependency中对应的内容去找到那个唯一的jar包导入,而Maven仓库又分为两种类型:

  1. 本地仓库:自己计算机上的一个目录(用于存储jar包),项目引入依赖时,会先查找本地仓库中是否有对应的jar包,如果有则在项目中直接引用,如果没有就要去中央仓库中下载对应的jar包到本地仓库
  2. 中央仓库:maven软件中内置一个远程仓库地址,就是中央仓库,它服务于整个互联网,由Maven团队维护,是全球唯一的,下面是它的链接

Central Repository:

配置Maven国内源

那么事实上,我们可以发现,这个网址是在国外的,因此我们在真正使用并需要从中央仓库下载时会发现,特别的慢,那么为了解决这个问题,国内一些厂商就做了中央仓库的镜像仓库,它包含了中央仓库中的所有内容,访问速度可以大大提升,因此我们就需要配置国内的Maven仓库,这里我们以阿里的Maven镜像为例

  • File -> Settings

勾选上红色矩形中两个框框右侧的Override 

  • 点击那个文件夹的按钮找到你的settings.xmlrepository这两个文件所在的文件夹,初次配置时应该都是在C盘,可以像我一样把它挪到E盘或者其它什么盘里面,因为以后下载的依赖越来越多的话,占的内存可能会越来越多,所以建议大家移动一下盘

到你想存放的目录下,把.m2整个文件都拷贝过来

  • 用记事本编辑settings.xml文件,找到mirrors,在图中位置加上这样一段代码

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

保存并退出

  • 再次回到本地仓库,即IDEA配置那个地方,将原来的设置改变成你现在这个.m2中两个文件,要对应着改哈,这样配置就完成了,刷新一下Maven

专业版创建Spring项目

请保证你在创建前已经完成了Maven的配置!!

  •  点击Spring Initializr,注意红色位置的各种配置
  •  在这个界面选择你想添加的依赖,因为我们要做Web所以我选了web

  • 等待Maven导入依赖

出现像这样的界面,右下角有下载情况就是创建成功,初次创建项目需要的时间要稍微长一点,这是正常现象,大家可以耐心等待一下

当依赖中出现一堆这样Maven的包,右侧的Maven的生命周期,插件等等都有时就说明导入依赖成功

注意点:每一次创建新项目时都要检查一下Maven本地仓库的配置,如果你发现创建项目格外慢,有可能是本地仓库的设置在新项目中重置了,重新配置,然后刷新Maven,直到像这样pom.xml不报红,build里面sync无报错

如果pom.xml中有报红,那么多半是依赖导入的问题,检查Maven仓库配置,多刷新Maven,如果都没问题依旧报红,那么可能是version问题,在中央仓库中去找对应的jar包有没有你那个版本,修改,刷新,一定要多刷Maven!!!并且要注意对照我的Maven配置,如果一直报错,试试改成我的同款配置,即用Bundled(Maven 3)

那么如果上述所有操作你都做了依旧有sync有报错,pom.xml无报错,那么可能是IDEA的缓存问题

IDEA中清理缓存

  • File -> Invalidate Caches.. -> 勾选上所有的 -> Invalidate and Restart清理IDEA缓存

测试项目

按照图示顺序依次点开文件,找到带有Application字样的类,有一个绿色可启动小三角形那个,此处我的测试是如果,在里面写了一个"Hello Spring"的输出

运行程序,出现Spring标志图标,输出内容也正常显示,运行成功

社区版创建Spring项目

社区版创建项目有两种方式,一种是官网创建版,一种是用Spring Boot Helper这个插件的版本,这里我们介绍插件版,不过要注意的是,这个插件是收费的,以前这个插件提供了免费试用版,现在好像已经没有了,大家可以自己去找找资源,这里我们会给出插件的官网地址

Spring Boot Helper Plugin for JetBrains IDEs | JetBrains Marketplace

大家可以在里面找到自己的IDEA对应的版本的插件,免费的插件要求IDEA版本在2021.1 - 2022.1.4范围内,个人建议最好还是用专业版~~~方便一点

安装插件

  • 下载好插件后我们打开IDEA,点开settings,然后按照下图序号操作

  • 找到你安装的插件的位置[导入的是zip格式的!!不要解压喔],安装好之后,重启IDEA
  • 重启窗口后看见这样一个插件就说明安装成功啦~~

创建项目

  • 选择Spring Initializr

  • 按照各个属性设置好你的项目

  • 选择你要导入的依赖,这里我导入了web

  •  配置你的IDEA项目名称和路径,注意一定要对应!!

  • 点击右下角提示框,载入Maven项目 

这里载入项目,初次创建的话比较慢,甚至有可能卡死,大家耐心等待一下~~~都是正常现象

  • 点开pom.xml,删除.RELEASE,刷新Maven

 

  • 出现这样的错误多半是Maven仓库配置问题,修改配置

  

  • 改为我这样

  • Apply,刷新Maven,sync现在无报错了,创建成功

如果pom.xml中有报红,那么多半是依赖导入的问题,检查Maven仓库配置,多刷新Maven,如果都没问题依旧报红,那么可能是version问题,在中央仓库中去找对应的jar包有没有你那个版本,修改,刷新,一定要多刷Maven!!!并且要注意对照我的Maven配置,如果一直报错,试试改成我的同款配置,即用Bundled(Maven 3)

那么如果上述所有操作你都做了依旧有sync有报错,pom.xml无报错,那么可能是IDEA的缓存问题,具体清理缓存过程请查看专业版创建Spring项目中的IDEA清理缓存

测试项目

  • 按照图示顺序,依次展开文件,找到带有Application字样的可运行类

这里我给它写了个"Hello Spring"的输出

  • 运行程序,出现Spring标志,输出也成功打印,运行成功,项目创建完成

 

http://www.lryc.cn/news/609993.html

相关文章:

  • 理解 Agent 的基本概念与功能
  • 正点原子STM32MP257开发板移植ubuntu24.04根文件系统(带桌面版)
  • RTSP/RTMP播放器超低延迟实战:无人机远控视觉链路的工程实践
  • [特殊字符]️ 整个键盘控制无人机系统框架
  • 链表与数组面试常见问题详解与实现
  • 分布式存储性能跃迁指南:RoCE无损网络设计与优化
  • mysql远程登陆失败
  • DC-Mamba:一种用于热红外无人机图像盲超分辨率的退化感知跨模态框架
  • 正则表达式在js中的应用
  • Hadoop MapReduce 3.3.4 讲解~
  • Prometheus-3--Prometheus是怎么抓取Java应用,Redis中间件,服务器环境的指标的?
  • 超详细:2026年博士申请时间线
  • 【Redis】安装Redis,通用命令
  • Redis键值对中值的数据结构
  • 05 基于sklearn的机械学习-梯度下降(下)
  • 解决 “crypto.hash is not a function”:Vite 从 6.x 升级至 7.x 后 `pnpm run dev` 报错问题
  • vue3+vue-flow制作简单可拖拽可增删改流程图
  • JMeter的基本使用教程
  • OpenLayers 详细开发指南 - 第八部分 - GeoJSON 转换与处理工具
  • 《Java Agent与Instrumentation:运行时增强的魔法武器》
  • 为什么ping和dig(nslookup)返回地址不一样,两者的区别
  • 基于C语言实现(控制台 )小区物业管理系统
  • Java常用数据结构入门
  • 推荐广告搜索三种业务的区别
  • 车载通信架构 ---车内通信的汽车网络安全
  • 人工智能之数学基础:条件概率及其应用
  • 跟着顶刊学写论文-摘要1
  • 深入浅出 RabbitMQ:工作队列实战(轮训策略VS公平策略)
  • SpringCloud之Nacos基础认识-服务注册中心
  • 13.Home-面板组件封装