01-SpringBoot入门

亡羊补牢,为时不晚。人在任何时候做自己想做的事情,有这种自由,还是很值得欣慰的。

我之前做Web开发的时候,已经是5年前了吧。

现在技术日新月异,我想我这把老骨头还可以出来继续发挥下余热。

[TOC]

开发环境说明

  • win10
  • openJDK 1.8

我就不搞什么Ubantu,CentOS啥的了,部署的时候,是没有太多区别的。

SpringBoot简介

SpringBoot是一种利用Spring框架快速开发、部署的工具,它有如下几个优势:

  • 快速搭建
  • 快速使用
  • 提供生产级的服务监控
  • 快速部署(自带服务器)
  • 非功能性通用配置
  • Java配置,无代码,XML书写等繁琐事

就头4条,就很吸引人了。

笨办法创建一个SpringBoot

为什么说是笨办法呢?因为有模板化创建的方式方法,不用这么手工去做。

但是本着后续看代码找问题的态度,我们还是要讲一下代码的基本创建的。

如果你要快,那请直接看“模板化构建”小节描述。

JAVA版本选择

Oracel JDK和Open JDK两个分支,推荐选择Red Hat提供的openJDK版本,后续JDK的8和11都是Red Hat维护,下载链接,推荐用8号版本。

OpenJDK的环境变量配置,是自动添加上的,所以省事很多。

选择IDE

我们常用的编码工具有2个:

  • Eclipse
  • IntelliJ IDEA(后面就叫IDEA)

两者都是很优秀的IDE,IDEA是后起之秀,市场占有率逐年上升,Eclipse是个老大哥,使用起来很节约资源。建议电脑没有SSD,不是很硬的话,还是选择Eclipse。

关于更多的IDE选择问题,请诸位查看网上更多相关资料,笔者只是提了一些建议罢了。
在这里提供eclipse下载,笔者已经看到有基于docker的下一代开发IDE了。

当然,还有Spring推出的all in one,下载这个很省事。

我觉得还可以使用纯净版的eclipse,用什么下什么。毕竟现在还在学,不是说效率出奇迹的时候。

创建项目

创建项目常见的方式有三种,分别是:

  • mvn命令行
  • Eclipse中创建Maven工程
  • IDEA中创建maven工程

核心就是maven这套体系,IDE只是包个壳,提供更多便利而已。

mvn创建

安装配置好maven后,CMD命令行执行如下命令

maven的安装与配置

mvn archetype:generate ^  # ^ 为命令行连接符
-DgroupId=org.sang ^  # 组织ID
-DartifactId=chapter01 ^ # 项目名称
-DarchetypeArtifactId=maven-archetype-quickstart ^ # 项目骨架
-DinteractiveMode=false # 是否使用交互模式

会生成对应的目录,导入到IDE即可。

目前应该没有多少人在用这种方式创建了。大多是用的IDE创建。

IDE创建

IDE创建项目这里就讲Eclipse的创建即可

  1. 打开IDE
  2. 创建项目的时候选择Maven Project
    • 选中Use default Workspace location
    • 选择默认项目骨架(Archetype)
    • 填写项目信息,各种项目参数,路径-----这里记得是选择快照版本(snapshot)
    • 完成

IDEA也是这种流程。

构建项目

构建项目,就是要把项目做成一个能跑起来的过程。分为如下三步:加载依赖、编写启动类、

加载依赖

这里就是书写maven配置,建议如下配置:

在pom.xml中配置

添加spring-boot-starter-parent作为parent

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.4.RELEASE</version>
</parent>

这个starter提供了maven的配置,而且还提供dependency-management,开发者根本不用关心引入包的其他依赖版本配置,方便了依赖管理,所以,引入了starter,这就是一个全自动配置包!

填了parent的坑,子类引用就方便多了。比如我们要整一个web的starter,如下:

<dependencies>
    <dependency>
        <groupId>org.springframwork.boot</groupId> # 保持parent一致
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

对,这又是一个starter,也是一个全自动。

对于maven不熟悉的朋友,请见

菜鸟maven教程

编写启动类

其实就是写启动APP类,和C层的controller类

APP

APP类也叫启动类,也就是项目的入口类。maven的项目架构上已经创建了项目包,在工程的java目录下创建一个APP类:

@EnableAutoConfiguration // 开启自动化配置
@ComponentScan // 开启C层映射包扫描,让请求映射到对应的方法中去
public class App{
    public static void main(String[] args){
        // 声明默认启动类,args为启动时输入的参数数组。
        SpringApplication.run(App.class,args); 
    }
}
Controller

SpringMVC的控制器 HelloController,C层。

@RestController 
public class HelloController{
    @GetMapping("/hello") // 定义接收hello请求
    public String hello(){
        return "hello moto!";
    }
}

@RestController=@Controller+@ResponseBody,这是一个组合注释

  • @Controller 是一种特殊化的@Component 类。习惯于和@RequestMapping绑定来使用,后者是用来指定路由映射的。

  • @ResponseBody 是用来把返回对象自动序列化成HttpResponse的。

APP与Controller的注解最优写法

注解的天下:

APP启动类,2个注解(类注解)

Controller类,2个注解(1个类注解,1个方法注解)

这是不是有点麻烦了?

我估计作者也是这么觉的,但是思来想去,Controller的注解不好搞,就把启动类的注解优化下吧。所以APP启动类注解可以这么写了:

@Spring BootApplication // 组合注解,有之前2个注解的功能(自动化配置+映射包扫描)
public class App{
    public static void main(String[] args){
        SpringApplication.run(App.class,args); 
    }
}

至此,我们的构建就基本完成了。接下来我们启动项目看效果。

启动项目

一般有三种启动方式:

  • mvn命令行启动
  • IDE直接运行main方法(启动定义类)
  • 打包启动

三种场景都有运用的地方。

mvn命令行启动

需要进入项目的根目录,就是pom.xml文件的那个目录

mvn spring-boot:run

接下来我们打开浏览器,在 http://localhost:8080/hello 可以看到效果。

IDE直接运行main方法

这个就是IDE上鼠标右键run即可,选择SpringBootApp启动。同样在浏览器上可以查看效果。

打包启动

通过Springboot把项目打成jar包运行。我们部署的时候是非常常见的。

需要3步完成

  • 添加plugin到pom.xml文件中

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework,boot</groupId> # 保持parent一致
                <artifactId>spring-boot-maven-plugin</artifactId> # 添加mavne打包插件
            </plugin>
        </plugins>
    </build>
    

    这里是不是同样需要rebuild进行生效,若Eclipse选中的autoBuild,则是改后自动生效,个人推荐手动。

  • 运行mvn命令打包

    这里应该是需要进入对应项目根目录下进行如此操作的。

    mvn package 
    
  • java -jar命令启动

    java -jar [jar包文件路径]
    

其实打包启动的详细配置还有很多,这里我们不多说,后续有的是机会描述。

是不是觉得这么一步一步构建也挺麻烦的?不用怕,模板化构建会很快让你改变看法

模板化构建

关于模板化构建,简单来讲就是在“笨办法构建一个SpringBoot”里面所描述的东西,我们一步带过,通过一个模板工具,填写一些参数,让工具帮我们生成我们要的基础构建。

一般常见构建方法有三种:

  • 在线构建
  • IDEA构建
  • STS构建

在线构建

SpringBoot官方提供的构建方式,通过在一个页面填写参数生成一个可用IDE导入的文件。

这个神奇的网站就是:https://start.spring.io/

但愿不要被墙

在这个页面,一般需要填写几个参数

  • 构建方式:Maven还是Gradle
  • 语言:java or other
  • SpringBootbanben hao
  • 项目的组织ID(包名)
  • 模块名称
  • 项目依赖

写好过后就可以生成下载文件了。

我们在Eclipse中,以maven的方式导入,然后项目,右键,maven,updateProject,选中Froce Upadate of Shnapshots/Realease后,点击OK。——这样可以解决项目导入过后的报错。

IDEA构建

社区版的IDEA无法构建,请知悉

由于笔者不会选择这种方式(垃圾电脑),故只是说下入口。

  • 创建项目的时候,选择 Spring Initializer
  • ……

STS构建

STS是spring tool suite的缩写,是基于eclipse的的工具。是开发spring应用对eclipse进行定制的产物,为spring应用的开发提供充分的支持,使spring开发更加的简单、高效。

all in one的形式下载:下载地址

关于离线安装方式,这篇文章写的很清楚了。使用方式

项目new--> spring start project,即可开启STS构建。

笔者稍微试了一下,maven在中国的速度,真是惊天地,泣鬼神。。。。。

为毛我觉得使用了撑杆工具加速,更坑了呢?

我RNMGB,越搞越烂,一堆报错。。。。

我知道你需要这个,阿里云镜像配置。

FAQ

Q:新建项目pom.xml中报错:Failure to transfer org.apache.maven.plugins:maven-compiler-plugin:pom:3.5.0 from ……

A:解决办法,右键工程,选择maven->update project,勾选force update ……,点击OK。

同时笔者建议,最好去掉自动build(在菜单栏的project里面关闭。)


Q:eclipse的maven构建很慢啊!!

A:请用阿里云镜像。这速度,跟之前比就是飞起了。如果没有安装maven,eclipse自带的,思路是自己兴建一个maven的config文件,请见

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容

  • https://github.com/cuzz1/springboot-learning 一、Spring Boo...
    cuzz_阅读 3,431评论 1 6
  • 02_SpringBoot入门 1、简介 简化Spring应用开发的一个框架。整个Spring技术栈的一个大整合。...
    顽强的小弹壳阅读 193评论 0 0
  • 陈二妞是个哑巴,出生之后就没说话,我想那该有多寂寞啊。 二妞的妈妈精神不太正常,怀她的时候误食了过期药品,好不容易...
    刘阿蛮阅读 685评论 2 1
  • 班上有一个男生,笑点极低,低到远远地消失在地平线以下。 我们眼里一件稀松平常的似乎没什么笑点的事,就...
    素言锦叙阅读 689评论 11 12
  • 文/云中荷风 有的路笔直通达 有的路蜿蜒曲折 有的路姹紫嫣红 有的路孤独寂寞 有的路 走过了 还想走 有的路 走过...
    云中荷风阅读 451评论 16 35