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,毕竟你是在学习知识嘛,肯定选择最新的稳定版本,生产环境另说。

(更多…)

继续阅读 →

掐指一算,高考已经是十年前的事了

2009年5月18日下午,我疲惫地趴在教室的桌子上,老师让大家下楼,去拍毕业照,同学们都比较兴奋,我也是。可我没想到的是我的高考备战就在这一天结束了。

高中的晨读早得很,大概六点之前就要起床,我跟其他人一样,掐着点去教室,没想到还是迟到了,被班主任罚了跑步。不知道为啥平常使劲儿打球身体没感觉异样,这一跑步就被累到了,晚上睡觉的时候就感觉腰部很不舒服。毕业照一照完,我就跟老师请了假回到家,家里人带我去附近的小诊所看了看,医生说是劳伤,搞了点药膏试试,歇歇就成。

过了一天情况不见好转,没办法长时间坐着,必须躺着休息。家人也很紧张,带我去了医院检查。检查完医生一看,腰椎间盘突出。。。这可了得,马上就要高考了,这破病影响高考怎么办?幸运的是,我的椎间盘只是变形,纤维环并没有破裂(不可逆),慢慢养是可以恢复的。回家之后的几天,我吃饭是没办法长时间坐着吃的,得吃一会儿,躺一会儿,不然腿部外侧会感觉很麻木。这时候离高考也就半个月时间吧。

(更多…)

继续阅读 →

准备写个Spring Boot教程

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

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

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

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

继续阅读 →

几个常见的程序员兼职平台

程序员多多少少会有做私活的想法,如果日常工作强度不大的话,挣点钱补贴家用也挺好的。不过大多数人在接到第一单的之前,都放弃了这个想法,因为僧多粥少,竞争激烈。如果你真的想尝试尝试,不妨看看本文介绍的一些平台,去尝试用一用。

我选的全都国内的平台,在你一个一个使用之前,你得先准备好自己的简历,包括教育经历,每份工作的年限和工作内容,还有作品的截图或者链接。通常还需要几句简单话来介绍你能做什么,擅长做什么。几乎每注册一个站点都需要填一遍。

(更多…)

继续阅读 →

公众号突破100粉丝

然而,这并不是很令人振奋的消息。

前两天,我的账号符合了开通广告主的条件(企业主体,微信认证,注册满一个月,有几篇原创文章等),我就试了试,看看通过广告主增粉效果如何。广告主是微信提供的广告平台,有需求的企业可以在朋友圈、公众号文章以及小程序中以文字、图片、视频等方式推广自己的商品、公众号、卡券、店面、游戏和应用等。你平常在朋友圈看到的广告,都是通过广告主投放的。我所选择的是在公众号文章底部广告推广我的公众号。

在文章底部推广公众号,也有三种形式,有两种图文卡片,一种文字卡片。我选择的是文字卡片,只需要写一句文案就可以,不用设计图片。点击卡片会进入公众号详情,点击关注会弹窗提示用户确认。你肯定见过这种形式,如下图:

(更多…)

继续阅读 →

使用Guava操作基本类型

Java中有8种基本类型,他们不能像类一样作为泛型的类型参数:

这就导致很多的通用工具类,并不支持基本类型,比如Collections.max()方法。Guava提供了一系列API,可以帮助你灵活地使用基本类型数组和集合API:

Guava的工具API

每个基本类型都对应有一个工具类,类名为基本类型的名字首字母大写,结尾加上个s,比如int对应Ints。Guava还提供了操作无符号整数的API,UnsignedIntegerUnsignedLong是对无符号整数的一个封装,你可以像用BigInteger一样用他们;如果你对性能要求高一点,可以使用UnsignedIntsUnsignedLongs直接对int和long进行操作。

接下来,我们通过示例来说明如何使用Guava的这些API。不过在你决定使用这些API之前,你得先看看Arrays或者Collections或者基本类型包装类里有没有你满足你需要的API,毕竟Guava只是对这些工具进行了补充。

(更多…)

继续阅读 →