springboot入门系列(1):最简起步

适合以下读者:Java基础知识及格,能大概看懂java代码,也写过几百行代码,但觉得继续磨基础知识太枯燥,但又没机会做过任何真实项目(教材的老古董练习项目除外),非常想接触主流的开发实践,听说过spring或springboot,但无从下手。你大概率是刚学完java课的在校学生、培训班在读或结业却学得稀里糊涂、其他语言转来java的程序员等等这样一些人。

写在前面 

Java基础入门以后,要渡过一个非常关键的提升期,不要再去反复磨基础知识了,要在实践中反过来发现基础知识的漏洞并补缺,同时也不断提升基础知识。只有知道基础知识是用来干什么的,才能真正掌握它。

Spring和Springboot不是java的唯一进阶方向,只不过是非常主流的方向之一。不要认为会Spring和Springboot就是“更厉害的Java程序员”,必须明确认识到——Spring和Springboot是“把非常复杂的Java项目简单化、傻瓜化”的一种东西。更进一步地,Springboot是把Spring简单化、傻瓜化。可以这样理解:用纯粹的Java来做大型项目越来越难以掌控、效率越来越低的时候,Spring像开挂一样出现,解决了很多问题;后来Spring的楼越盖越高,老鸟们都在100层以上,但新来的爬到10几层就累趴了,Springboot像一部直达电梯一样出现了。

学习Springboot,如果你是搞过项目的过来人,它是帮助你解决更复杂问题的;而如果你是菜鸟,它是你开挂的阶梯,让你能快速直达老鸟的脚下看看风景,否则等到你爬到今天老鸟的位置上,老鸟又飞到1000层开外了。本文和本系列针对后者,属于前者类型的读者可以绕行了,走前感谢你慷慨给了一次“阅读”,同时也欢迎给出斧正意见。

接下来以Springboot为主线,必要时才提及Spring。

准备

重复一次,读者必须有java基础。

先明确Springboot是干什么的(和不能干什么)。

对于初学者,Springboot能让你很方便地写出一个“运行在服务器上的程序”。什么是“运行在服务器上的程序”?微信、QQ、淘宝、支付宝、王者、吃鸡、CSDN、360安全卫士、共享单车、选课系统、CET报名和查分系统……现在几乎所有的数字应用都是由“电脑或手机上的前端界面”和“服务器上的后台程序”组成的,是的,Springboot就是写这些后台的。“能”写任意后台,但并不一定都适合,到底哪些适合,暂不讨论。

后台和前端之间什么关系?什么区别?前台负责貌美如花负责呵护备至,脏活累活后台来做。前台后台之间会交换数据,前台负责收集和展示数据,后台负责接收并处理数据。近几年随着网络和云概念的普及,基本上可以说前后台通常处于网络的两个端,很少有前后台在同一个物理节点上的应用了(单机斗地主就是,但大家更喜欢上网和其他真实玩家一起玩)。

Springboot,就是在服务器上接收、处理、并发回数据的。(敲黑板,Springboot本身没有前台界面哦,界面怎么办?先猜猜)

Springboot不能干什么?首先,不能显示任何东西(有异议先保留)。其次,java不能干的它都不能干,除此之外没了。(java不能干啥?课外知识)

针对spring没有界面这个问题,学springboot,你需要另外有一个给你做界面的妹纸。没有?稍后教你靠自己的双手咯(别下车!真的是去幼儿园!)。

先开车!

 

开始

大多数教程里面是不是上来就让你打开项目里面的一个什么什么配置文件,在里面加一段你根本看不懂的配置?会这个做法的老鸟,还需要看这种初级教程?而不懂这个做法的菜鸟,则仅仅是结结实实被迫看你秀了一把而已。

真正的菜鸟路径是下面这样的:

 

用网络浏览器打开网站地址:https://spring.io/ 网站打开会有点慢,耐心点。

对,英文的。如果你英文好,也不会来看这篇文章对吧。坚持住——

到2020年3月7日,这个网站界面是这样的:

 

最上面一行,找到Projects,中文是“项目”或者“工程”,学java的时候你大概了解这个东西,暂不深究。

在未来,网站页面可能会有变化,但网站的主页地址通常不变,最上面这个Projects频道入口也一直会有,如果它变了样子,你也应该能找到。

盘它,Projects,下拉列表中排位很靠前的,Spring Boot,盘它,如下图:

新打开的页面网址是https://spring.io/projects/spring-boot

作为一个学编程学java学springboot的未来程序猿,从今天起你要关注浏览器的地址栏。现在你可能看不太懂,但你要有这个意识。

现在页面如下(截止到2020年3月7日):

这个页面(以及它可以链接到的更多页面)就是关于Springboot的一切。有教程、文档、帮助、范例等等。

目前的版本是2.2.5,以后会升。但只要数字是2打头(大版本第2版),那么你接下来学到的主要内容是不会有大的变化的。

接下来看图:

OVERVIEW是“概览”,页面比较长,向下拖拖拖,看到最下面:

Quick Start是“快速开始,新手必备”,盘那个蓝色的链接“Spring Initializr”。(再一次,如果未来页面变化了,你还是可以找到“Quick Start”)

打开的地址是:https://start.spring.io/ (再一次,提醒要有看浏览器地址栏的意识)

欢迎抵达幼儿园,可以下车——哦不,下载了。等等,什么叫做“下载”?我是来学习的,你却叫我下载?这难道是给了我一个……种子?

老司机,请收敛。这里之所以要你下载,是因为你是菜鸟,什么都不会写代码太慢(况且现在写了你又不懂是啥意思),所以网站后台(眼熟吗?Springboot是干什么的来着?)自动帮你写好了Springboot最基本的代码,并且打了个压缩包,让你下载后拆包即用。跟叫外卖一个道理,专门针对只会吃不会做的人群。

别的教程可能在这里就会教你这样那样一系列复杂操作,先不要。菜鸟要相信我,什么都不要动。

马上去点那个绿色按钮(Generate是“你搞,别等我动手”的意思,“Ctrl+箭头”的意思是你按键盘上的Ctrl和回车就能代替鼠标点击),反应可能会有点慢,别重复点击。作为一个搞IT的人士,浏览器反应慢的时候不要暴躁乱点是基本的素养。

前面一路操作如果你循规蹈矩没有乱点的话,那么现在下载得到一个文件名是demo.zip的压缩包。(浏览器下载文件默认存在哪里,自己好好找找)

总结:在https://start.spring.io这个页面点绿色按钮得到一个zip压缩包。

一句话的操作为什么搞这么复杂。目的是带你浏览一下Spring大观园,有个整体的初步概念。而不是像小偷一样从窗户爬进入卧室。

 

首次体验

首先,得到上面的demo.zip文件,这已经证明你到了Springboot家的大门了。解压缩它,先放松地浏览一下里面哪些文件。

接下来才是真正的挑战,你得到了springboot的身体,但还没有得到它的灵魂。

体验分3个层次:

  • 得到了demo.zip,这是最低层次的体验;
  • 第2层次是把它运行起来;
  • 第3层次是能改写、定制它。

第1层次已经达到。

第2层次有个门槛,就是传说中叫maven的东西。只要会用maven即可,不需要很深入理解它。

如果已经掌握maven,你应该知道它主要有2种使用方式,一种是“在命令行里用mvn命令”另一种是“在集成开发环境里用maven插件”,那么你根据maven的知识,把刚才解压缩出来的内容当做一个maven项目运行起来就可以了。

如果不掌握maven,那现在就体现出来笔者的理念,就是你只有用到什么东西的时候去学它,才更容易学会。请任意找一篇maven入门教程,来学习一下最简单的使用吧。或者笔者也有一篇专门定制的《maven系列(1):Windows环境最简使用》

注意有个前提是jdk(不低于1.7)已经安装好。

暂时先不动用集成开发环境,仅仅基于清爽的maven命令行模式,首先在项目目录下运行mvn package命令打包:

注:我这里项目解压缩出来目录在D:\projects\demo,maven安装目录在D:\apache-maven-3.5.2\,读者根据自己的实际目录调整。

完成后,项目目录下多出一个子文件夹名叫target,里面有个demo-0.0.1-SNAPSHOT.jar:

这里复习一下java基础知识:如何运行一个jar文件?——答案在下图中用红框框出来了。这个知识点不太牢的菜鸟,先去复习一下java基础教程。两种写法,根据自己的喜好写,搞懂目录关系即可。

如上图,看到那一堆特殊字符拼出的“Spring”图样,就意味着开始启动了。

 

后续紧跟着可能会有很多复杂的信息,但只要没看到ERROR字眼,就意味着启动成功了。关键的提示信息如下:

说的是名叫DemoApplication的项目花了1.913秒启动起来了。

 

复习重点:学会maven基本操作,就很简单了。但也不需要深入学maven,以免有挫败感。笔者有一篇量身定制的教程《maven系列(1):Windows环境最简使用》

 

深入体验

到了第2层体验,不上不下的感觉,确实运行起来了,但什么也干不了。

Hello World来一发呗!

代码飚起来。

扫视一下项目,src子文件夹就是源代码所在。深入看一下是这样:

  • src\main\java\com\example\demo\ 这里有个 DemoApplication.java
  • src\test\java\com\example\demo\ 这里有个 DemoApplicationTests.java

一目了然,后者是测试用的。暂按下不表。前者是主要的源代码。

打开前者如下:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

别看不认识的,只看认识的,main方法。

现有的不动,在main方法中加一行

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
		System.out.println("Hello World."); // << == 新加的
	}

}

重新打包,在项目目录下mvn package

 

重新启动,java -jar命令走起

漂亮的丑陋的Hello World.来了

第3层的体验之初体验,打完收工。

这个体验是很不主流的,你几乎不会在任何教程中看到这样的体验建议。但我相信聪明如你,已经明白,你亲手把Springboot的大门打开了。而其他教程实际上是带你翻过墙头进了院子,你没有体验到开门那个手感,甚至被一堆花里胡哨的代码绊了个狗吃屎。

重新审视

还记得上文提到Springboot没有界面吗?

你知道哪些形式的界面?Windows原生窗口、浏览器页面、移动端App……,别忘了,“标准输入输出”也是一种“人机界面”,在Windows上“命令行窗口”内运行程序的时候,这个命令行就是标准输入输出,也就是界面。

上述所有的,包括命令行,都可以作为Springboot的“界面”,但注意都不是Springboot本身所提供。

这次我们用标准输入输出充当了界面,在Springboot代码里,标准输入输出被抽象为System.in和System.out。标准输入输出充当Springboot界面有一个缺陷,就是它本身通常不支持远程传递信息。也就是说Springboot在哪里它作为界面就在哪里。Springboot通常在哪里?前文提到过,在服务器。那么标准输入输出就只能是在服务器。服务器自己跟自己玩显然没前途。不过,这里有个特别的用处,debug日志等恰好是一类不便于对外公开的信息,用标准输入输出来显示出来就非常合适了。Springboot也为此特意允许你加入专业的日志模块插件(如log4j等),暂时按下不表。

对于初学者来说,Springboot更主流的界面是web浏览器。这样讲不严格不全面,但初学者先这样记住。

下一篇,来一次Springboot与主流界面搭配的真正体验。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值