写在前面

笔者在学校里学习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. 日期时间数据的处理—R语言

    日期时间是一类独特的数据,在实际中有众多的应用.R语言的基础包中提供了两种类型的时间数据,一类是Date日期数据,它不包括时间和时区信息,另一类是POSIXct/POSIXlt类型数据,其中包括了日期 ...

  2. 统计模拟实验—R实现(蒲丰投针)

    统计模拟实验 统计模拟是数理统计.和计算机科学的结合,是一门综合性学科.在科学研究和生产实际的各个领域中,普遍存在着大量数据的分析处理工作.如何应用数理统计中的方法来解决实际问题,以及如何解决在应用中 ...

  3. 迁移学习《Asymmetric Tri-training for Unsupervised Domain Adaptation》

    论文信息 论文标题:Asymmetric Tri-training for Unsupervised Domain Adaptation论文作者:Kuniaki Saito, Y. Ushiku, T ...

  4. Redis 数据类型 Stream

    Redis 数据类型 Stream Redis 常用命令,思维导图 >>> Redis Stream 是 Redis 5.0 版本新增加的数据结构. Redis Stream 主要用 ...

  5. Matlab蚁群算法求解旅行商问题

    目录 问题展现 解决代码 代码1 输出结果 代码2 输出结果 代码3 输出结果 问题展现 假设有一个旅行商人要拜访全国 31 个省会城市,他需要选择所要走的路径,路径的限制是每个城市只能拜访一次,而且 ...

  6. 吃透SpringMVC面试八股文

    说说你对 SpringMVC 的理解 SpringMVC是一种基于 Java 的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于Spring框架的一个模块. 它通过一套注解,让一个简单的Jav ...

  7. vue中获取所有路由

    在router实例上有options属性:

  8. vivo 推送系统的容灾建设与实践

    作者:vivo 互联网服务器团队 - Yu Quan 本文介绍了推送系统容灾建设和关键技术方案,以及实践过程中的思考与挑战. 一.推送系统介绍 vivo推送平台是vivo公司向开发者提供的消息推送服务 ...

  9. HTML中link标签的那些属性

    在HTML中, link 标签是一个自闭合元素,通常位于文档的 head 部分.它用于建立与外部资源的关联,如样式表.图标等. link 标签具有多个属性,其中 rel 和 href 是最常用的. r ...

  10. Linux 升级sudo到 1.9.12p1,解决漏洞CVE-2022-43995

    一.查看sudo版本 sudo -V 二.下载最新版本到服务器并解压 wget https://www.sudo.ws/dist/sudo-1.9.12p1.tar.gz && tar ...