SpringBoot 1

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包项目改一改,因为这会避免很多后续麻烦,手动滑稽微笑。

你可能感兴趣的:(SpringBoot 1)