前言❤️❤️
hello hello💕,这里是洋不写bug~😄,欢迎大家点赞👍👍,关注😍😍,收藏🌹🌹
这篇博客会进入到Spring的解析,最后会创建一个非常简单的Spring项目,浏览器访问服务器,服务器返回hello Spring,通过这个就能很好的感受到Spring的强大
现在绝大多数 Spring 项目都是用 Maven 创建管理的,也就是用Maven作为Spring项目的构建工具,Maven管理依赖是特别方便的,这篇博客就会先解析Maven依赖的导入和Maven仓库,最后再解析Spring项目的创建
🎆个人主页:洋不写bug的博客
🎆所属专栏:JavaEE进阶专栏
🎆铁汁们对于JavaEE进阶的各种常用核心语法,都可以在上面的JavaEE进阶专栏学习,专栏正在持续更新中🏀,有问题可以写在评论区或者私信我哦~
1,Maven简介
Maven就是一个项目管理工具,可以通过pom.xml的配置获取更方便的获取到jar包(在数据库JDBC这里,一些铁汁在导入mysql驱动时可能接触过Maven)
Maven定义了工程在构建过程中的一些约定,让测试,打包,访问静态资源变得统一
例如这里src目录里分为了test目录和main目录,main目录中是Java项目开发时的源代码和静态资源文件,test目录中是用于测试的代码,生成jar包时并不会包含test目录中的内容
下面有个pom.xml,就是项目中关于Maven的配置文件
创建Maven还有个好处,那就是Maven 中央仓库中包含了大量开源的jar包,我们可以直接在pom.xml(配置文件)中通过依赖配置引入,无需手动下载和管理
如果不创建maven项目,如果创建普通项目,还是找jar包下载,再导入进来,而Maven中央仓库就类似于手机上的应用市场
打开Maven依赖检索平台(在Maven中,依赖除了 JDBC 驱动,还包括其他工具库、框架),链接已经放在下面了(国内网络环境这个链接有时会进不去,如果进不去,可以尝试下阿里的Maven依赖搜索网站,也可以试下豆包浏览器,博主微软浏览器进不去的时候,豆包浏览器就可以进去)
Maven依赖检索平台
阿里依赖检索平台
例如要导入数据库驱动jar包,直接在依赖检索平台上搜索mysql(带有J的是较新的版本,就点击带有J的这个)
使用比较经典的8.0.33版本,点击8.0.33,点击后就进入了这样的一个界面,复制下面框里的内容(在下图中已圈出)
接着回到IDEA中,打开pom.xml配置文件,在properties标签后写上一个dependencies标签,接着把东西复制到这个标签中
要从中央仓库上导入jar包,jar包的相关信息写到dependency标签中,再把dependency放到dependencies标签中,如下图:
这时候点击一下右上角的这个按钮,Maven 就会从中央仓库下载对应的 JDBC 驱动 JAR 包,并将其引入到项目中,让你的 Java 程序能够使用该驱动来操作数据库,点击完下载后就会发现这里也不爆红了
External Libraries放的是当前项目能直接使用的所有外部 jar 包,原先这里只有jdk,现在有mysql的jar包和protobuf的jar包(mysql 驱动本身运行需要 protobuf,Maven会自动帮忙导进来,这就叫传递依赖)
Maven仓库的地址在国外,因此可能有少部分铁汁下载依赖的时候会特别慢,甚至卡住,这时候就可以把仓库镜像配置成国内的(如果能成功下载依赖的铁汁们就不需要改镜像了)
右键IDEA程序,点击打开文件所在位置
进入文件位置后,找到刚进入IDEA这一层(点击上一层即可到达)
打开plugins目录,根据这个路径来找到配置文件settings.xml,先拷贝一份,防止一会改错
接着用记事本打开这个配置文件,找到mirrors这部分,这里面就是默认仓库镜像配置,把这部分用阿里的镜像来替代
把mirrors整部分都用下面这个来替代,这时候改成了阿里云的镜像配置,以后下载依赖走的就是阿里云的路径,速度就会比较快
<mirrors><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror><mirror><id>central</id><mirrorOf>*</mirrorOf><name>aliyun central</name><url>https://maven.aliyun.com/repository/central</url></mirror><mirror><id>spring</id><mirrorOf>*</mirrorOf><name>aliyun spring</name><url>https://maven.aliyun.com/repository/spring</url></mirror></mirrors>2,Maven仓库
<dependency> 标签这一整块配置就叫做依赖声明,也称为依赖,就是向 Maven 声明:我的项目有这个依赖,麻烦帮我把这个 jar 下载进来
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version></dependency>标签里面包括的就是依赖坐标,由三个部分组成:
- 组织ID,可能是某个公司、基金会、学校、部门…
- 项目名称,一个组织中会有很多不同的项目
- 版本号,版本号大多数由三位组成,大版本.中版本.小版本
小版本的变更就是改一些小的bug;中版本的变更是相对中等的需求的改动;大版本的变更是大需求的改动,例如项目重构
就是根据依赖的坐标,从仓库中下载jar包
依赖的版本如果项目没有特别要求,建议就选择次新版本(相对来说比较新,不要用最新的,可能有坑)
Maven仓库分为中央仓库和本地仓库,本地仓库就储存在我们的计算机上,在IDEA中打开设置,搜索mave,就能看到本地仓库的地址(默认是在C盘)
打开这个路径看下,里面有很多目录,里面就存放着Maven 下载好的所有依赖(jar 包),凡是之前导入过的jar包,都会储存在本地仓库中(有一些是自动下载的)
铁汁们也可以修改本地仓库的存储路径,点击后面的Override,例如要改到D盘,先把repository目录移动到D盘,再把对应的地址填写到这里
在Maven项目中导入jar包分为两种情况:
- 本地仓库中有对应的jar包,那就直接从本地仓库中拿就行了(下图中黑色箭头)
- 本地仓库中没有对应的jar包,从中央仓库中下载,中央仓库下载后把jar包储存到本地仓库中,再从本地仓库中返回jar包,下次其他项目要导入这个jar包时就直接从本地仓库中取出即可(下图中的红色箭头)
像阿里、华为这些大厂会把中央仓库复制一份,供大家下载使用(下载速度更快),属于时公共镜像
那像公司内部写的业务jar包,是不方便传到中央仓库上的,而员工互相发又比较麻烦,如何解决呢?
很多大厂会搭载一个私有仓库,业务jar包放在这个私有仓库中,只有员工才有权限访问,下载对应的jar包,一般是在本地仓库的配置文件setting.xml中加入账号和密码,进行访问(也是先在本地仓库中找,找不到取私有仓库,再找不到去中央仓库)
前面引入mysql的驱动时,又引入了一个mysql的依赖protobuf,如果这个项目之前已经引入过其他版本的protobuf,已经有一个了,这次不想引入了,应该如何操作呢?
可以在xml中搞个exclusion(排除)标签,里面加上protobuf的信息,引入mysql驱动时不引入这个依赖,因为可能要排除多个依赖,所以exclusion标签包裹在exclusions标签中
还有个更简单的办法,就是下载个Maven Helper插件
接着下面这里就会多个一个Dependency Analyzer,也就是对依赖的视图化分析
点开后选择All Dependencies as Tree,以树的结构呈现依赖关系,不想导入protobuf的话,直接右键,点击Exclude(排除)
3,第一个Spring项目
最早提出的是Spring Framework,但是 Spring Framework 存在配置多,入门难的问题,后来Spring 也意识到了这个问题,为了简化开发者的使用,从而创造性的推出了 SpringBoot
在IDEA社区版本中,是没法直接创建Spring项目的,想要创建需要捣鼓插件;在IDEA专业版本中,是可以直接创建的
铁汁们可以打开Helper中的About,查看当前的IDEA版本,Community就是社区版,Ultimate就是专业版,如下图:
这里建议大家用专业版来学习,大学生通过上传学生资质,可以免费使用专业版
申请链接
在专业版中创建项目,选择创建Spring Boot项目,语言选择Java,类型选择Maven,打包方式选择jar包
点击Next进入下个页面,上面的Spring Boot版本中,SNAPSHOT表示开发中的版本,还没有正式发布,不要选,如果使用的话,后续这个版本发生变化,代码就会运行出错
依赖部分导入Web中的Spring Web即可,如下图,选好后点击Create
创建好Maven项目,结构如下:
- .idea:IDEA的专属配置文件夹,存放这个项目在IDEA中的配置,换电脑打开项目就重新生成
- .mvn:是Maven的配置目录,作用:别人拿到你的项目不用本地装 Maven,脚本会自动下载对应版本 Maven 来构建项目,保证所有人 Maven 版本一致
- src:存放源代码,是开发的核心文件夹
- .gitattributes:git的版本控制文件,用来规定不同文件的换行符格式,基本上不用管
- .gitignore:git忽略清单
- HELP.md:里面放了新手入门Spring Boot指引的网址
- mvnw:Linux/Mac系统的maven wrapper脚本
- mvnw:Windows系统的maven wrapper脚本
- pom.xml:Maven 核心配置文件
初学时,可以把demo中的目录或者文件删除的只剩下.idea(删不掉,会自动生成)、src(在这里写代码)、pom.xml(配置导入依赖),如下图
External Libraries目录中放的是依赖,点开看一下,会发现创建Maven项目时,这里面自动导入了很多Maven依赖
写代码是在src中写的,在src目录中又分为了main目录和test目录,main目录中放业务主代码,test目录中放单元测试代码(打包上线不会把test中的测试代码打进去)
在main目录中又分为java目录和resources目录,java目录中放java代码,resources目录中存放配置文件、前端资源、模板文件等
这个java目录中的DemoApplication类就是启动类,项目启动的时候,就是通过这个启动类来启动的
运行这个类,就会发现main方法中也没有什么循环或者等待输入逻辑,但是程序是一直处于运行状态的,因为Spring Boot核心定位就是开发服务端(后端)程序,而服务器是要一直运行等待客户端访问的
接下来我们就用Spring项目简单的写一个服务器程序,通过浏览器访问这个服务,这个服务器返回"hello Spring Boot"
在org.example.demo包下创建一个HelloController类(跟启动类在同级目录下)
HelloController类代码如下,写个hello方法,返回字符串,无非就是多加个两个声明(后面会解析这两个声明的含义)
packageorg.example.demo;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassHelloController{@RequestMapping("/hello")publicStringhello(){return"hello Spring Boot~";}}接着运行DemoApplication类,这个服务器就启动起来了,在浏览器中访问这个服务器看下效果,输入127.0.0.1:8080/hello(本地回环IP是127.0.0.1,Spring的默认内置端口是8080)访问后就能看到返回的字符串了,如下图:
这里就能感受到Spring Boot的强大,通过浏览器访问是TCP传输,在前面的JavaEE初阶专栏中,解析了TCP服务器的编程(博客链接如下),步骤是很多的,要循环 accept() 接收客户端连接,拿到 Socket,还要搞输入流输出流,字节数组等等
网络编程博客
但是Sping Boot对这些操作进行了封装,写个方法,搞几个声明,就能完成服务器和客户端通信的效果,是不是很好用🐵
结语
- 初学Spring的铁汁看到第一个项目可能会感觉比较抽象,想着怎么就加两个声明,就能用浏览器来访问这个服务器了,这个在后面博客中会详细解析
- Spring的相关知识还是比较多的,JavaEE进阶专栏也会用大量的博客来解析Spring,后面博客涉及的代码量就会越来越多,建议铁汁们动手敲一遍,不管懂不懂原理,慢慢敲的多了就能搞懂各个东西的含义了
以上就是今天的所有内容啦~完结撒花~🥳🎉🎉