亡羊补牢,为时不晚。人在任何时候做自己想做的事情,有这种自由,还是很值得欣慰的。
我之前做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命令行执行如下命令
mvn archetype:generate ^ # ^ 为命令行连接符
-DgroupId=org.sang ^ # 组织ID
-DartifactId=chapter01 ^ # 项目名称
-DarchetypeArtifactId=maven-archetype-quickstart ^ # 项目骨架
-DinteractiveMode=false # 是否使用交互模式
会生成对应的目录,导入到IDE即可。
目前应该没有多少人在用这种方式创建了。大多是用的IDE创建。
IDE创建
IDE创建项目这里就讲Eclipse的创建即可
- 打开IDE
- 创建项目的时候选择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不熟悉的朋友,请见
编写启动类
其实就是写启动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文件,请见