SpringBoot 1
看完这个教程可以干什么?
什么都干不了,可以快速搭建一个SpringMVC的hello world,这不就等于啥都没干么。
为什么做这个教程?
因为最近项目要用,而我已经有5年多没写过一句java代码了,所以在找SSM项目的时候看到很多人用maven打包,但一看maven就头疼,xml书写的真的是很繁琐。幸亏身边有一群大神,不仅给我实际项目范例,还帮忙讲解了半天,非常感谢张大神和裴大神!既然拉jar包也能做,那为什么还要SpringBoot?虽然暂时不会用SpringBoot,或许以后都不会用,但是既然已经花了时间就顺便把基础学一学。
SpringBoot是什么?
用于快速创建Spring应用,适用于快速搭建的免配置环境,它的库用gradle或maven生成和管理。官方解释是可以快速搭建微服务。
Gradle和Maven类似于iOS中的cocospad库,用于创建项目时自动配置下载三方包,但是Gradle和Maven的侵入性更多,打包还需要写配置用命令。iOS的cocospad做到的就是配置三方包,打包不入侵。所以总体上来说还是喜欢cocospad一样的军刀工具,只做该做的,不带来任何多余的麻烦。吐槽完毕!
FirstSample(基于SpringMVC示例):
1、用SpringBoot创建一个基础项目(基于Gradle)
1.1、用Eclipse创建一个Gradle项目并利用示例的gradle配置项目
2、创建一个基础的MVC访问代码组(基于Eclipse)
3、RUN AS Application(基于Eclipse)
4、使用Gradle build WAR包(基于Eclipse)
5、通过Tomcat 9部署war并访问
注:为什么选用gradle而不用maven,是因为不喜欢xml那么繁琐的书写格式,gradle也是Android推荐,书写格式上与iOS的cocospad类似,所以更喜欢用熟悉的、通用的方法。
详细步骤:
1、用SpringBoot创建一个基础项目
打开https://start.spring.io/generate中可以选择maven或gradle语言选择java Spring boot 2.1.1默认
Group填写包名前缀com.tiger
Artifact填写项目名称SpringBootSpringMVC
Dependencies中可以搜多MVC,MyBatis,thymeleaf等等,如果想勾选这些,可以选择最下面Switch to the full version.这里提供了SpringBoot的很多工具。本质上依赖是通过gradle加载的,本地的,网络的,包括SpringBoot中没有列举的都可以用gradle后续添加。
点击Generate Project,搞定!一个下载包大概100K以内,下载到本地eclipse目录,是的没错,我们从配置到加载,一共用了不超过30秒,就生成了一个基础项目,惊不惊,喜不喜!其实如果平时有积累,自己搭建项目注意过的也可以搭一些空项目,copy一下也不超过30秒。
Eclipse import,因为生成的项目选择的gradle,所以import选择gradle。一路闪电带火花next…finish闭着眼睛点。
第一次因为gradle要配置和下载包,所以会慢,等一会就OK。时间太长可以看一下是不是被墙了,有的时候资源会被墙,收费/免费翻墙请自行到1024社区找方法,我们都是正经人只看技术讨论区。搞定import后在 Java resources/libraries/Projct…Dependencies 目录下,所有三方包引用都在这里,如果要手动下载这些包也可以去拷贝出来。
以上一个基本项目就拉出来了,一个XML配置项都没写,是的,因为SpringBoot有默认配置项和扫描包。所以只要写逻辑代码就行。
1.1用Eclipse创建一个Gradle项目并利用示例的gradle配置项目
如果以上的方式觉得麻烦还有个方法创建,只需要Eclipse就行。
选择新建项目 gradle 项目,填写一个项目名称 finish。
默认的build.gradle如下全删掉,是的全删掉!
/*
* This build file was generated by the Gradle 'init' task.
*
* This generated file contains a sample Java Library project to get you started.
* For more details take a look at the Java Libraries chapter in the Gradle
* user guide available at https://docs.gradle.org/4.3/userguide/java_library_plugin.html
*/
// Apply the java-library plugin to add support for Java Library
apply plugin: 'java-library'
// In this section you declare where to find the dependencies of your project
repositories {
// Use jcenter for resolving your dependencies.
// You can declare any Maven/Ivy/file repository here.
jcenter()
}
dependencies {
// This dependency is exported to consumers,that is to say found on their compile classpath.
api 'org.apache.commons:commons-math3:3.6.1'
// This dependency is used internally,and not exposed to consumers on their own compile classpath.
implementation 'com.google.guava:guava:23.0'
// Use JUnit test framework
testImplementation 'junit:junit:4.12'
}
替换build.gradle内容如下,拷贝进去保存
buildscript {
ext {
springBootVersion = '2.1.1.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war'
group = 'com.tiger'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
configurations {
providedRuntime
}
dependencies {
implementation('org.springframework.boot:spring-boot-starter-web')
runtimeOnly('org.springframework.boot:spring-boot-devtools')
providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
testImplementation('org.springframework.boot:spring-boot-starter-test')
}
右击项目选择Gradle 》 Refresh Gradle Project,等更新依赖结束,搞定。就这么酸爽。以上配置文件有一些点,会影响到后面编译war,等会再说。
更新gradle以添加/删除依赖,这个怎么找本地的网上去找gradle教程。比如我们现在对页面使用thymeleaf,需要添加依赖,可以在dependencies添加如下
dependencies{
… …
implementation('org.springframework.boot:spring-boot-starter-thymeleaf')
… …
}
保存选择项目Refresh Gradle Project等更新搞定!全程没用一句命令,eclipse帮我们搞定了。包括后面的build。
2、创建MVC示例代码很简单
https://spring.io/guides/gs/serving-web-content/
照着做基本就是如下几个要件:controller、html、application
application很有意思,spring boot的应用可以像java一样run as java application。入口就是这个application,web项目也一样,springboot把tomcat类似的web容器反向加载到应用中。
注:项目里会提到创建static为名的文件夹,怎么建都提示staitc是java保留关键字,所以直接到目录下创建一个文件夹就好了,示例项目也是这么干的。
3、Run as Application(jar)
它的启动通过右击项目run as java application,选择我们写的application启动,在console中会一路闪电带火花跳Log,然后就OK了,只要8080端口不被占用,当然这个端口可以配置修改。
关闭项目也是通过console中的stop按钮关闭,简单吧,写完逻辑代码,run一下,关闭也可以stop,项目可以打包为jar上传服务器,run java jar。够微够方便了吧,然并卵,我并不care这方法。
4、打包为war包(基于Gradle)
很多时候我们还是希望能够打war包,与普通应用有区别,我们创建的web应用即可以以SpringBoot的微应用方式运行,也可以通过传统的war包运行。
build.gradle中打war的关键行
apply plugin: 'war' //定义打包方式,两种可选微服务jar包或传统服务war包
dependencies {
… …
runtimeOnly('org.springframework.boot:spring-boot-devtools')// dev工具runtime有效
providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')//内置tomcat启动包runtime有效
… …
} // 开发环境中使用,不希望打入服务的可以用providedRuntime来标注
Gradle打包的奇淫技巧需要自己去百度了。
基于gradle的打包找到的都是一行命令gradle build,我只想说,写这个的人一定是傻X,如果要做教程就的让人看得懂,运行这个命令的前提是安装了gradle命令,那么你面临更多的问题要解释,比如mac如何安装,linux如何安装,windows如何安装,或者最少扔一个链接来参考。都没有,在什么地方build也不说。所以最好的教程一定不是copy和意淫出来的。
最简单的方法eclipse》run as》run configurations》Gradle Project,在gradle tasks里输入build,working Directory选择项目目录,apply-run,搞定
Run完毕,因为这项目一共就几个文件,所以没啥问题可以说,去项目build/libs目录下找到对应的war包
5、tomcat部署
我用Mac机,war拷贝到tomcat中webapps目录下,终端进入tomcat的bin目录,修改sh运行权限,chmod u+x *.h。然后./startup.sh启动后访问localhost:8080/SpringMVC…你的项目就ok了,那么MVC的那些配置文件我们没写,是因为用了autoConfiguration,实际项目并不会这么简单,也是要写配置代码的。
浪费了一整天时间,所以我还是决定用大神给我的拉jar包项目改一改,因为这会避免很多后续麻烦,手动滑稽微笑。