Spring Boot教程(4) – 依赖管理

不管你熟悉不熟悉Gradle,build.gradle文件中的内容都是要去重新认识的。

上图是一个典型的,刚刚生成的build.gradle文件,添加了个Guava依赖。repositories{ mavenCentral() } 这段代码表示我们的依赖都是从中央仓库下载的。 比如这个Guava库,implementation后面跟上库的坐标就可以引入 ,之前我们说过,坐标由 groupId:artifactId:version 组成。奇怪的是,上面列出的第一个依赖,却没有版本号。因为这个版本号是由一个插件管着的,插件叫做 io.spring.dependency-management。

说到这儿,又要牵扯出很多东西了,容我深吸一口气。

(更多…)

继续阅读 →

Spring Boot教程(3) – 运行第一个项目

把项目运行起来是极具成就感的事情,不管是在学习新语言还是新框架的过程中。上一篇文章说明了如何使用Spring Initializr和IDE来创建项目,下面就看看项目能不能跑起来,我们通过IDE和命令行,直观地理解框架的作用。

先来一张IntelliJ IDEA的截图,为项目刚创建时候的状态。左侧为项目目录区,右侧为代码区。左边,右边和下边都有工具栏,你可以打开终端,可以查看类结构,可以查看Build时候的信息,可以查看运行时候的信息,可以查看Gradle和Maven的依赖以及任务,可以连接数据库,可以查看Spring相关的东西比如各种Bean及其关联等等。界面最上方是文件的目录以及运行相关的按钮。

(更多…)

继续阅读 →

Spring Boot教程(2) – 创建第一个项目

在准备好开发环境之后,你肯定有这样的疑惑,我如何新建一个项目?搁在以前,一般是通过IDE的“New Project”菜单,跟着引导一步一步来创建项目。现在Spring Boot提供了一种更加统一的方式,使用Spring Initializr(start.spring.io)。

Spring Initializr页面

Spring Initializr可以根据你设置的选项,生成一个新的项目,并下载到本地,你导入IDE就可以开发了。页面上第一个选项是选择构建工具,使用Maven还是Gradle。第二项选择语言,大部分用的都是Java。第三项选择使用哪个Spring Boot版本,一般来说用的都是最新的正式版,本文发布时,版本还是2.1.5。如果你需要的版本上面没有列出来,可以先生成个项目,然后再在配置文件里改成你需要的版本。

(更多…)

继续阅读 →

Spring Boot教程(1) – 准备开发环境

如果你从未运行过Spring Boot应用,那你一定很好奇这个框架到底是如何使用的,比如代码是如何组织起来的?程序从哪里开始运行?部署时候需要如何打包?在搞清楚这些问题之前,你需要搭建一个自己的开发环境,开发过程都基于这个环境。

JDK的选择

Spring Boot应用不同于以往的Spring框架应用,它可以像普通的Java程序一样以java -jar app.jar的方式运行。那么这个时候,它就是一个纯Java程序了,你的系统中只要有了Java,就可以把程序跑起来。Spring Boot最新版(2.1.5)的源码是基于Java 8的,你也可以使用Java 11或者其他高于8的版本。在选择Java版本的时候,你可以参考这篇文章。JDK的安装过程不再赘述,想必你在学习Java语法的时候就已经完成了这个过程。我推荐使用Java 11,毕竟你是在学习知识嘛,肯定选择最新的稳定版本,生产环境另说。

(更多…)

继续阅读 →

准备写个Spring Boot教程

最近我打算写一系列Spring Boot教程,用来讲解Spring Boot基础知识和一些常见的应用场景。你可能会问,现在讲这个话题的东西这么多,写出来的意义是啥,别人会看么。我的觉得吧,一条街上很多饭店,你决定去哪个,肯定还是看谁的好吃或者服务好。我肯定得有一些不一样的地方,下面是我的思路:

  1. 首先我不打算列出长篇累牍的代码。我平常搜索文章的时候,也时常碰到有文章会连续出现整页的代码,有的缩进还是乱的,给人一种恐惧感。我会尽量把展示出来的代码压缩,减少干扰,让读者注意力集中在理解上。
  2. 其次我计划尝试用画图去说明问题。之前在学习Spring Security的时候,我脑子里充满了疑惑,搞不清楚他拦截的原理。后来搞懂了之后我脑子里就有一张图,十分清晰地表示了那一堆Filter是如何排序的,一个请求是如何被拦截处理的,如果我能把类似的容易理解的图像传递给读者,那么他们就会节省很多解惑的时间。
  3. 覆盖学习路径中可能遇见的错误。如果你照着某个教程一步一步走下去,可能遇见了bug,解决这类bug也是挺苦恼的,我尽量把这些可能发生的bug说出来。条条大路通罗马,通不到罗马的路,也需要给路人指出来,让人心里有底。
  4. 文章不会很长,专注于解决某个问题。对于想解决具体问题的人来说,他能判断出内容是否有用,对于想系统学习的人来说,文章长短倒是不太重要,一篇一篇来就是了。

我在纸上大概规划了下有哪些主题要写,随随便便就列了20多个,的确有很多要说的。如果再加上Spring Cloud的话,就更多了。如果你在内容上有什么建议,可以在下面给我留言。

我也在学习和实践Spring Boot的过程之中,同时我深知写作的过程会让我对知识的理解水平上升到高于写作内容的层次,你要教别人,就得搞清楚之前你只是会用的技能。看看我能否坚持下来吧。

继续阅读 →