写在前面

笔者在学校里学习Spring项目的时候,基本上都是老师照着书念PPT,然后演示一些有限的课堂案例,笔者印象很深刻,学校里整个Spring项目也就做了留个课堂练习,而且难度基本上属于连接上数据库就算成功,现在看来很简单的事情,不知道当初为啥搞得这么辛苦

不怕大家笑话,虽然笔者在学校里的成绩尚可,但是笔者直到拿到学位证书的时候,还说不清楚maven依赖是什么,在工作的时候才逐渐了解很多内容,后来必须反复思考到底出了啥问题

所谓黑猫白猫,抓到耗子就是好猫,因此笔者翻了好些教科书,又找了好些培训班网课,结合笔者在科班的经历,后来发现了他们的优缺点在哪

教科书/科班上课

  • 【优点】知识体系比较完整,基本上学校里会把所有的知识点都过一遍,即便是比较次一些的学校也会过一遍基础,太过高深的东西项目里用的也不多
  • 【优点】有老师指点,学校的教学资源是无限使用的,你不会的问题可以去问老师,不仅学到知识还能怒刷一波平时分好感度
  • 【缺点】知识体系比较反人性,笔者翻了不少书,基本上第一章都是扯一大堆某某技术的发展历程,或者写一个Hello World,但是哪有做项目写一个Hello World就算成功的呢
  • 【缺点】学习过程比较繁琐,笔者更喜欢直接的干货,相信很多同学也和笔者一样,即我问一个问题,直接告诉我答案,而不是我问一个问题给我一大堆书,说答案就在里面,你找吧,往往你学了几十页,项目里某个需求也就用到几页甚至几行而已,你可能不知不觉中用上了都不知道这是哪个知识点
  • 【缺点】知识点整合不起来,笔者在看书的时候发现,书上的内容往往是一堆零件,要合体成为一个完整的项目光靠读书是不行的
  • 【缺点】做项目过程比较艰难,相信很多同学都跟着书上做项目,但是做着做着往往就和书上的过程走偏了,因为书毕竟是人写的,有些作者默认你会的东西直接略过去了,事实上很多同学都还不会,往往出现这种情况,连个问的人都没有

培训班上课/网课

  • 【优点】实践性比较强,很多培训班基本上都是给你讲义,然后带你做项目,有做完整项目,也有做一堆课堂练习的,确实弥补了课堂实践性弱的问题,这某种程度上也解释了为啥有些培训班出来的同学反而学得好
  • 【优点】针对性比较强,往往培训班必须掌握的技术他一定会教,做不出一个完整的项目,你肯定会大呼上当受骗,因此你学到的东西一定能保证你做出来一个项目,不管技术含金量高不高
  • 【缺点】老师水平不高,这里带点笔者的个人感情色彩,基本上培训班所谓的老师技术本身也强不到哪里去,他要真这么厉害为啥跑来这种地方挣外快,一年七位数还不够他潇洒吗
  • 【缺点】知识体系不完整,培训班往往带你找工作,因此功利性非常强,基本上只教必须会的东西,你想额外拓展的概率不是很高
  • 【缺点】填鸭式教育,这我想上过培训班的大家都有感受,属于两个月走完别人四年的道路,这也是培训班被人嗤之以鼻的最大原因之一

后来笔者在工作以后了解到了若依,笔者很佩服该项目的作者,拥有很高超的技术

后来经过笔者的总结,想出了一个理论结合实际的看起来有点蠢的办法,这个方法在其他项目合集中也会使用,当然估计很多书里其实也用过了

那就是笔者同样会在该系列做一个项目,当然和若依比起来就差远了,随着系列往后,内容也会逐渐完整,我们伴随着项目完整性的升高逐渐辐射所有的知识点,在做项目的时候给和大家讨论技术的完整性,当然有些技术可能不太可能或者不太适合在同一个项目中同时出现,例如不可能又使用Hibernate,又使用Mybatis,这方面没有关系,我们配合版本管理神器【Git】,代码可以多版本,也可以回退

系列需求

  • 运行第一个Spring Boot项目

同步环境

这里做一个补充说明,有些同学可能对笔者用的IDE比较陌生,这里说一下笔者用的是IDEA 2023.1.1【官网最新版本】破解版

而且对UI做了更新

下载网站:https://www.exception.site/

更新UI,另外笔者安装了中文插件,笔者习惯了中文,因此请同学们自行适应语言

新建项目

使用IntelliJ IDEA创建一个Spring Boot应用程序的步骤如下:

  1. 打开 IntelliJ IDEA,选择“Create New Project”菜单。
  2. 在弹出的对话框中,选择“Spring Initializr”选项,类型选择Maven,并点击“Next”按钮。
  3. 在下一步中,选择所需的依赖和Spring Boot版本,例如Web、JPA、MySQL等。
  4. 点击“Next”按钮后,输入项目的名称、选择项目的存储位置和Java SDK版本,并点击“Finish”按钮。IntelliJ IDEA会自动创建一个Spring Boot项目。

在选择“Spring Initializr”选项时,需要选择“Maven”或“Gradle”构建工具类型。

这取决于你想使用哪种构建工具来管理你的项目。

如果你选择使用Maven,那么在下一步中将会看到Maven项目设置选项。同样的,如果你选择使用Gradle,那么在下一步中将会看到Gradle项目设置选项。

在选择构建工具类型后,点击“Next”按钮即可继续创建Spring Boot应用程序。

创建完Spring Boot项目后,需要添加一些必要的依赖。以下是一些常用的依赖:

  1. spring-boot-starter-web:Spring Boot中提供的Web相关依赖,包含Tomcat和Spring MVC。
  2. spring-boot-starter-data-jpa:Spring Boot中提供的JPA相关依赖,使得我们可以方便地使用Hibernate等ORM框架。
  3. spring-boot-starter-security:Spring Boot中提供的安全相关依赖,可以快速集成Spring Security功能。
  4. spring-boot-starter-test:Spring Boot中提供的测试相关依赖,包括JUnit、Mockito等。

要添加这些依赖,可以直接在pom.xml文件中添加。例如,要添加spring-boot-starter-web和spring-boot-starter-data-jpa依赖,可以在pom.xml文件中加入以下内容:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>

完成这些步骤后,可以开始编写Spring Boot应用程序了。

项目介绍

Spring Boot的项目结构通常遵循标准的Maven或Gradle项目结构,并遵循约定优于配置的原则。下面是一个常见的Spring Boot项目结构的示例:

1. src/main/java:这个目录下包含了应用程序的Java源代码文件。
   - com.example.myproject:这是默认的主包名(package)。
      - controller:包含控制器(Controller)类,用于处理HTTP请求。
      - service:包含服务(Service)类,用于处理业务逻辑。
      - repository:包含存储库(Repository)类,用于访问数据存储。
      - model:包含数据模型(Model)类,用于表示应用程序中的实体和数据对象。
      - Application.java:包含主启动类,其中的main方法用于启动Spring Boot应用程序。

2. src/main/resources:这个目录下包含了应用程序的资源文件。
   - application.properties/application.yml:包含应用程序的配置属性,如数据库连接、日志级别等。
   - static:包含应用程序的静态资源文件,如html、css、js等。
   - templates:包含应用程序的模板文件,如Thymeleaf模板。

3. src/test/java:这个目录下包含了应用程序的测试代码文件,通常与src/main/java下的包结构相同。

4. src/test/resources:这个目录下包含了应用程序的测试资源文件。

5. pom.xml/gradle.build:这个文件是用来定义项目的依赖和构建配置的。

6. target:这个目录是构建过程中生成的输出目录,包含编译后的类文件、打包后的可执行jar文件等。

这只是一个典型的Spring Boot项目结构示例,实际上可以根据需要进行调整和定制。例如,可以将不同的功能模块放在不同的包下,或者将测试代码和资源文件放在不同的目录下等。

操作步骤

  • 找到pom.xml,右键选中添加为maven项目【该步骤需要已经安装maven】

  • 为所有项目生成源代码并更新文件夹

  • 编译maven依赖项目

  • 安装maven依赖项目

  • 如果安装出现问题记得清空已安装依赖再重新安装

  • 运行主类

PS:第一次安装依赖项目可能会非常慢,请大家耐心等待

学习重点

什么是Maven

Maven是一个开源的项目管理工具,用于构建、管理和发布Java项目。它提供了一种简洁的方式来定义和管理项目的依赖关系,自动下载所需的依赖项,并支持项目的编译、测试、打包和部署。

Maven基于项目对象模型(Project Object Model,POM)的概念,通过一个XML文件来描述项目的结构和依赖关系。POM文件包含项目的配置信息,如项目的坐标(groupId、artifactId和version)、依赖项、插件等。Maven通过读取POM文件来了解项目的配置,然后执行相应的操作。

Maven主要具有以下功能:

  1. 依赖管理:Maven通过中央仓库来管理项目的依赖项,开发者只需要在POM文件中声明依赖,Maven会自动下载并安装相应的依赖项。
  2. 构建和编译:Maven提供了一套标准的构建过程,支持项目的编译、测试、打包等操作。开发者可以通过命令行或集成开发环境(IDE)来执行这些操作。
  3. 项目生命周期管理:Maven定义了一套标准的项目生命周期,包括编译、测试、打包、部署等阶段。通过执行不同的命令(如mvn compile、mvn test),开发者可以按照特定的生命周期阶段来执行相应的操作。
  4. 插件机制:Maven支持插件机制,开发者可以通过插件来扩展Maven的功能。例如,可以使用Maven插件来自动生成文档、生成代码、运行静态分析等。
  5. 多模块项目支持:Maven支持构建多模块项目,可以将一个大型项目拆分为多个子模块,每个子模块可以单独构建和测试,并且可以在父模块中定义依赖关系。

通过使用Maven,开发者可以更方便地管理和构建Java项目,提高开发效率和代码质量。它还促进了项目之间的协作和复用,可以轻松地共享和重用已经构建好的库和组件。由于Maven的广泛应用,许多开源项目都使用Maven作为其项目管理工具。

如何安装Maven

1. 前往https://maven.apache.org/download.cgi下载最新版的Maven程序:

2. 将文件解压到D:\Program Files\Apache\maven目录下:

3. 新建环境变量MAVEN_HOME,赋值D:\Program Files\Apache\maven

4. 编辑环境变量Path,追加%MAVEN_HOME%\bin\;

5. 至此,maven已经完成了安装,我们可以通过DOS命令检查一下我们是否安装成功:

mvn -v

如何在IDEA配置Maven

在设置中搜索Maven,然后把maven路径给配置上去,路径尽量用英文

解读一下代码是什么意思

package com.example.springlearning;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class SpringLearningApplication { public static void main(String[] args) {
SpringApplication.run(SpringLearningApplication.class, args);
System.out.println("Hello World!");
} }

这段代码是一个Spring Boot应用程序的入口类,它使用了@SpringBootApplication注解,表示该类是一个Spring Boot应用程序的主类。@SpringBootApplication注解相当于使用了@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解。

其中,@Configuration注解表示该类是一个配置类,@EnableAutoConfiguration注解表示启用自动配置,@ComponentScan注解表示自动扫描组件。

该类的main方法是程序的入口点,通过调用SpringApplication.run方法来运行Spring Boot应用程序。同时,在main方法中输出了"Hello World!"。

代码中的@SpringBootApplication是什么

@SpringBootApplication是一个Spring Boot的注解,它结合了@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解的功能。

@Configuration注解表示这是一个配置类,它等价于将该类作为Spring配置文件中的一个<bean>配置。

@EnableAutoConfiguration注解表示开启自动配置功能,它会根据添加的依赖自动配置Spring的各种功能。

@ComponentScan注解表示自动扫描并加载符合条件的组件(比如@Service、@Repository、@Component等),并自动注册为Spring管理的Bean。

综合起来,@SpringBootApplication注解可以简化Spring Boot应用的配置,使得开发者只需要关注核心业务逻辑,而不需要手动配置许多繁琐的东西。

【技术积累】Spring Boot中的基础知识【一】的更多相关文章

  1. Spring Boot 2.x基础教程:找回启动日志中的请求路径列表

    如果您看过之前的Spring Boot 1.x教程,或者自己原本就对Spring Boot有一些经验,或者对Spring MVC很熟悉.那么对于Spring构建的Web应用在启动的时候,都会输出当前应 ...

  2. Spring Boot中的JSON技术

    Spring Boot中的JSON技术 平日里在项目中处理JSON一般用的都是阿里巴巴的Fastjson,后来发现使用Spring Boot内置的Jackson来完成JSON的序列化和反序列化操作也挺 ...

  3. Spring Boot2 系列教程(六)自定义 Spring Boot 中的 starter

    我们使用 Spring Boot,基本上都是沉醉在它 Stater 的方便之中.Starter 为我们带来了众多的自动化配置,有了这些自动化配置,我们可以不费吹灰之力就能搭建一个生产级开发环境,有的小 ...

  4. Spring Boot中使用RabbitMQ

    很久没有写Spring Boot的内容了,正好最近在写Spring Cloud Bus的内容,因为内容会有一些相关性,所以先补一篇关于AMQP的整合. Message Broker与AMQP简介 Me ...

  5. 徒手撸一个 Spring Boot 中的 Starter ,解密自动化配置黑魔法!

    我们使用 Spring Boot,基本上都是沉醉在它 Stater 的方便之中.Starter 为我们带来了众多的自动化配置,有了这些自动化配置,我们可以不费吹灰之力就能搭建一个生产级开发环境,有的小 ...

  6. Spring Boot中的缓存支持(一)注解配置与EhCache使用

    Spring Boot中的缓存支持(一)注解配置与EhCache使用 随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决 ...

  7. Spring Boot2 系列教程(五)Spring Boot中的 yaml 配置

    搞 Spring Boot 的小伙伴都知道,Spring Boot 中的配置文件有两种格式,properties 或者 yaml,一般情况下,两者可以随意使用,选择自己顺手的就行了,那么这两者完全一样 ...

  8. Spring Boot 2.x 基础案例:整合Dubbo 2.7.3+Nacos1.1.3(配置中心)

    本文原创首发于公众号:Java技术干货 1.概述 本文将Nacos作为配置中心,实现配置外部化,动态更新.这样做的优点:不需要重启应用,便可以动态更新应用里的配置信息.在如今流行的微服务应用下,将应用 ...

  9. Spring Boot中整合Sharding-JDBC单库分表示例

    本文是Sharding-JDBC采用Spring Boot Starter方式配置第二篇,第一篇是读写分离讲解,请参考:<Spring Boot中整合Sharding-JDBC读写分离示例> ...

  10. Spring Boot 2.x基础教程:进程内缓存的使用与Cache注解详解

    随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一.Spring 3开始提供了强大的基于注解的缓 ...

随机推荐

  1. [数据库]mysql/mysqldump命令帮助说明

    1 mysql [root@test ~]# mysql --help mysql Ver 14.14 Distrib 5.7.24-27, for Linux (x86_64) using 6.0 ...

  2. LeeCode 二叉树问题(四)

    二叉搜索树的应用问题 二叉搜索树的定义 若左子树不空,则左子树上所有节点的值均小于根节点的值 若右子树不空,则右子树上所有节点的值均大于根节点的值 它的左右子树也均为二叉搜索树 中序遍历结果为一个升序 ...

  3. 解决IDEA创建项目时无法引入依赖问题:Cannot resolve **.**.**(已解决)

    今天在创建SpringBoot整合MyBatis项目时出现报错: Cannot resolve org.springframework:spring-tx:5.3.26 Cannot resolve ...

  4. Java学习笔记14

    1.Arrays类 ​ Arrays类包含用于操作数组的各种方法(如排序和搜索).该类没有构造函数,直接使用类名.方法名()的方法调用需要的方法. 常用方法 方法 作用 public static S ...

  5. GIL和池的概念

    1.GIL概念 1. 什么是GIL(为Cpython解释器) GIL本身就是一把互斥锁. 原理都一样. 都是让并发的线程同一时间只能执行一个 所以有了GIL的存在. 同一进程下的多个线程同一时刻只能有 ...

  6. 我的OpenAI库发布了!!!

    chatGPT正式发布已经有段时间了,这段时间我也深度体验了chatGPT的魅力. OpenAI除了提供网页版的chatGPT,还通过api的形式提供了很多其它服务,包括文字纠错.图片生成.音频转换等 ...

  7. 安装Nodejs,执行npm命令异常

    异常现象: 在安装完成Nodejs之后,使用npm install时提示异常: 使用cmd查看npm版本,也报同样的错误. "operation not permitted, mkdir ' ...

  8. [C++基础入门] 3、 运算符

    文章目录 3 运算符 3.1 算术运算符 3.2 赋值运算符 3.3 比较运算符 3.4 逻辑运算符 3 运算符 **作用:**用于执行代码的运算 本章我们主要讲解以下几类运算符: 运算符类型 作用 ...

  9. OpenAI CLIP 关键点 - 连接图像和文字

    标签: #CLIP #Image2Text #Text2Image #OpenAI 创建时间:2023-04-21 00:17:52 基本原理 CLIP是一个图像分类模型. 准备训练数据:准备大量的文 ...

  10. #Powerbi 利用EOMONTH,计算月度时间进度

    在POWERBI中计算本月的时间进度 许多小伙伴在做看板时,往往会遇到需要时间进度的计算,来配合业绩达成的进度,进行比较分析.那么如何在BI做通过公式进行这个数据的求值呢? 首先,我们需要测算两个值, ...