springboot 控制台输出错误信息_十年老架构教你如何开启第一个springboot项目,不想秃头就别学了...

开启第一个Spring Boot项目

按照SpringBoot带给人们简化企业级应用开发的承诺,本节将演示如何开启第一一个SpringBoot项目。创建Spring Boot应用的过程非常简单,甚至开发人员不需要输入任何代码,就能完成一个Spring Boot项目的构建。

配置环境

为了演示本例子,需要采用如下开发环境。

●JDK8。

Gradle 4.0。

其中,JDK的安装和Gradle的安装可以参阅2.4节的内容。

检查JDK版本情况,确保不低于Java 8版本。

$ 

检查Gradle版本情况。

$ 

通过Spring Initializr初始化一个Spring Boot原型

Spring Initializr 是用于初始化Spring Boot项目的可视化平台。虽然通过Maven或Gradle来添加Spring Boot提供的Starter 使用起来非常简单,但是由于组件和关联部分众多,有这样-一个可视化的配置构建管理平台对于用户来说非常友好。下 面将演示如何通过Spring Initializr 初始化-一个Spring Boot项目原型。

访问网站hts://sart.spring.io/, 该网站是Spring 提供的官方Spring Initializr 网站,当然,也可以搭建自己的Spring Initializr 平台,有兴趣的读者可以访问htst:ithbroo/prig i/nitilizx/来获取Spring Initializr项目源码。

按照Spring Initalizr页面提示,输入相应的项目元数据( Project Metadata )资料并选择依赖。

由于我们是要初始化一一个Web项目,所以在依赖搜索框中输入关键字“web” ,并且选择“Web:-Full-stack web development with Tomcat and Spring MVC"选项。顾名思义,该项目将会采用SpringMVC作为MVC的框架,并且集成了Tomcat作为内嵌的Web容器。图2-2展示了Spring Initializr的管理界面。

fa383b2ba20f0a4a5c3d86b654410a04.png

这里我们采用Gradle作为项目管理工具,Spring Boot版本选型为2.0.0.M4,Group 的信息填为“com.waylau.springcloud” , Artifact 填为“ializ-start” 。最后,单击“Generate Project"按钮,此时,可以下载到以项目“initializr-start” 命名的zip包。该压缩包包含了这个原型项目的所有源码及配置,将该压缩包解压后,就能获得initializr -start项目的完整源码。

这里我们并没有输入任何代码,却已经完成了一个完整Spring Boot项目的搭建。

用Gradle编译项目

切换到initializr-start项目的根目录下,执行gradle build来对项目进行构建,构建过程如下。

$ gradle build
Starting a Gradle Daemon, 1 busy Daemon could not be reused, use --status
for detailsDownload https:/ / repo. spring. io/mi lestone/org/ springframework/boot/
spring-boot-gradle-plugin/2.0.0.M4/spring-boot-grad1e-p1ugin-2.0.0.M4.
pom
Download https:/ /repo. spring. io/milestone/ org/ springf ramework/boot/
spring-boot-tools/2.0.0.M4/ spring-boot-tools-2.0.0.M4. pom
Download https:/ / repo. spring. io/milestone/org/ springframework/boot/
spring-boot-parent/2.0.0.M4/ spring -boot- -parent-2.0.0.M4.pom
Download https:/ / repo. spring. io/milestone/org/ springfr amework/boot/
spr ing-boot-dependencies/2.0.0.M4/spring-boot-dependencies-2.0.0.M4. pom
Download https:// repo1.maven. org/maven2/com/ fasterxml/ jackson/ jackson-
bom/2.9. 1/jackson-bom-2.9.1.pom
Download https:// repol .maven. org/maven2/com/ fasterxml/j ackson/ jackson-
parent/2.9.1/ jackson-parent-2.9.1. pom
Download https:// repo1.maven . org/maven2/ com/ fasterxml/oss-parent/30/
oss-parent-30. pom
Download https://repo1 .maven. org/maven2/ io/netty/netty-bom/4.1.15.Final/
netty-bom-4.1.15. Final. pom
Download https:// repo. spring. io/milestone/ io/projectreactor/ reactor-bom/
Bi smuth- -M4/ reactor-bom- Bi smuth-M4. pom
Download https://repo1 .maven. org/maven2/org/apache/ logging/1og4j/1og4j-
bom/2.9.0/1og4j-bom-2.9.0. pom
Download https:// repo.spring.io/milestone/org/springframework/ spring-
framework-bom/5.0.0. RC4/ spring- framework-bom-5.0.0. RC4.pom
Download https://repo.spring. io/milestone/org/ springframework/data/
spring-data-releasetrain/Kay-RC3/ spring-data-releasetrain-Kay-RC3. pom
Task :test2017-09-26 23:30:53.234 INFO 2604 --- [
Thread-5] o.
s.w.c.s. Gener i cWebAppl icationContextClosing org. spr ingfr amework.web. context. support. Generi cWebApplicationContext@75bb1267: startup date
[Tue Sep 26 23:30:51 CST 2017]; root of context hierarchy
BUILD SUCCESSFUL in 5m 5s
5 actionable tasks: 5 executed

我们来分析一下执行gradle build的整个过程发生了什么。

首先,在编译开始阶段, Gradle 会解析项目配置文件,而后去Maven仓库找相关的依赖,并下载到本地。速度快慢取决于本地的网络。控制台会打印整个下载、编译、测试的过程,当然,这里为了节省篇幅,省去了大部分的下载过程。最后,显示“BUILD SUCCESSFUL"的字样,说明已经编译成功了。

我们回到项目的根目录下,可以发现多出了一个build 目录,在该目录buildlibs'下可以看到-一个iniliz-start-0.0.1-SNAPSHOTjar,该文件就是项目编译后的可执行文件。在项目的根目录,通过下面的命令来运行该文件。

java -jar build/libs/ initializr-start-0.0.1-SNAPSHOT.jar

成功运行后,可以在控制台看到如下输出。

0.

6d85d1a64cfcf5ac7d198c136c65adae.png

-09-26 23

我们可以观察一-下控制台输出的内容(为了节省篇幅,省去了中间大部分内容)。在开始部分,是一个大大的“Spring” 的横幅,并在下面标明了Spring Boot的版本号。该横幅也称为Spring Boot的“banner”

用户可以根据自己的个性需求来自定义banner。例如,在类路径下添加一个banner.txt文件,或者通过将banner.location设置到此类文件的位置来更改。如果文件有一个不寻常的编码,也可以设置banner.charset (默认是UTF-8)。除了文本文件,还可以将banner.gif、banner.jpg 或banner.

png图像文件添加到类路径中,或者设置banner. image.location属性。这些图像将被转换成ASCII艺术表现,并打印在控制台上方。

Spring Boot默认寻找Banner的顺序如下。

●依次在类路径下找文件banner.gif、 banner.jpg或banner.png, 先找到哪个就用哪个。

●继续在类路径 下找banner.txt。

●上面都没有找到的话,用默认的Spring Boot Banner, 就是在上面控制台输出的最常见的那个。

从最后的输出内容可以观察到,该项目使用的是Tomcat容器,项目使用的端口号是8080。

在控制台输入“Ctrl +C",可以关闭该程序。

探索项目

在启动项目后,在浏览器里面输入“ttp:/ocalhost:8080/” ,我们可以得到如下信息。

Whitelabel 

由于在我们项目里面,还没有任何对请求的处理程序,所以Spring Boot会返回上述默认的错误提示信息。

我们观察一下initializr start项目的目录结构。

884e35270c449db075a6841c9f90394a.png

94e654b63fe49c05b2cedbc753917732.png

ffe329604b92362eb0b6041010c7182c.png

b0e608d09aec7eb068e1a5cff7a2e6e5.png

1. build.gradle文件

在项目的根目录,我们可以看到build.gradle文件,这个是项目的构建脚本。Gradle 是以Groovy语言为基础,面向Java应用为主。基于DSL (领域特定语言)语法的自动化构建工具。

Gradle这个工具集成了构建、测试、发布及常用的其他功能,如软件打包、生成注释文档等。与以往Maven等构架工具不同,配置文件不需要繁琐的XML,而是简洁的Groovy语言脚本。

对于本项目的build.gradle文件中配置的含义,下面已经添加了详细注释。
// buildscript 代码块中脚本优先执行
buildscript// ext用于定义动态属性
ext {springBootVersion = '2.0.0.M4'
//使用了Maven的中央仓库及Spring自己的仓库(也可以指定其他仓库)
repositories {mavenCentral ()maven { url "https:/ / repo. spring. io/ snapshot" }
maven { url "https://repo. spring. io/milestone" }
//依赖关系
dependencies {// classpath声明 了在执行其余的脚本时,ClassLoader可以使用这些依赖项
classpath ("org . spr ingframework . boot: spring-boot-gradle-plugin:$
{ springBootVersion}")
}//使用插件
apply plugin: 'java'
apply plugin: 'eclipse '
apply plugin: 'org. springframework.boot'
apply plugin: ' io. spr ing . dependency-management '
//指定了生成的编译文件的版本,默认为jar包
group = ' com. waylau. spring. cloud'
version = '0.0. 1- SNAPSHOT'
//指定编译. java文件的JDK版本
sourceCompatibility = 1.8
//使用了Maven的中央仓库及Spring自己的仓库(也可以指定其他仓库)
repositories {
mavenCentral ()
maven { url "https:// repo. spring. io/ snapshot" }
maven { url "https:/ /repo. spring. io/milestone" }
//依赖关系
dependencies {
//该依赖用于编译阶段
compile (' org. spr ingframework . boot: spring-boot-starter-web')
//该依赖用于测试阶段
testCompile('org. springframework. boot:spring-boot-starter-test')

2. gradlew和gradlew.bat文件

gradlew和gradlew.bat这两个文件是Gradle Wrapper用于构建项目的脚本。使用Gradle Wrapper

的好处在于,可以使项目组成员不必预先在本地安装好Gradle工具。在用Gradle Wrapper构建项目时,Gradle Wrapper首先会去检查本地是否存在Gradle,如果没有,会根据配置上的Gradle的版本和安装包的位置来自动获取安装包并构建项目。使用Gradle Wrapper的另一个好处在于,所有的项目组成员能够统一项目所使用的Giradle版本,从而规避了由于环境不一-致 导致的编译失败的问题。

对于Gradle Wrapper的使用,在类似UNIX的平台上(如Linux和Mac OS),直接运行gradlew脚本,就会自动完成Gradle环境的搭建。而在Windows环境下,则执行gradlew.bat文件。

3. build和.gradle目录

build和.gradle目录都是在Gradle对项目进行构建后生成的目录和文件。

4. Gradle Wrapper

Gradle Wrapper免去了用户在使用Gradle进行项目构建时需要安装Gradle的繁琐步骤。每个

Gradle Wrapper都绑定到-一个特定版本的Gradle,所以当第一次在给定Gradle 版本下运行上面的命令之一时,它将下载相应的Gradle发布包,并使用它来执行构建。默认情况下,Gradle Wrapper的发布包指向的是官网的Web服务地址,相关配置记录在gradle-wrapper.properties文件中。我们查看一下Spring Boot提供的这个Gradle Wrapper 的配置,参数“distributionUrl” 就是用于指定发布包的位置。

#Fri Jul 28 13:37:07 BST 2017

从上述配置可以看出,当前Spring Boot采用的是Gradle 4.0.2版本。我们也可以自行来修改版本和发布包存放的位置。例如,下面这个例子 ,我们指定了发布包的位置在本地的文件系统中。

distributionUrl=file\:/D:/software/webdev/java/gradle-4.0-all.zip

5. src目录

如果用过Maven,那么肯定对src目录不陌生。Gradle 约定了该目录下的main目录下是程序的源码,test 下是测试用的代码。

如何提升Gradle的构建速度

由于Gradle工具是舶来品,所以对于国人来说,很多时候会觉得编译速度非常慢。这里面很

大一部分原因是由于网络的限制,毕竟Gradle及Maven的中央仓库都架设在国外,国内要访问,

速度上肯定会有一些限制。下面介绍几个配置技巧来提升Gradle的构建速度。

1. Gradle Wrapper指定本地

正如之前我们提到的,GradleWrapper是为了便于统一版本。如果项目组成员都明确了GradleWrapper,尽可能事先将Gradle放置到本地,而后修改Gradle Wrapper配置,将参数“distributionUr"指向本地文件。例如,将Gradle放置到D盘的某个目录:

#distributionUrl=https\://services . gradle . org/distributions/gradle-4.0.2-bin.zip

2.使用国内Maven镜像仓库

Gradle可以使用Maven镜像仓库。使用国内的Maven镜像仓库可以极大地提升依赖包的下载速度。下面演示了使用自定义镜像的方法。

repositories {
/ /mavenCentral ()
maven { url "https:/ / repo. spring. io/ snapshot" }
maven { url "https:/ /repo. spring. io/milestone" }
maven { url "http:/ /maven. aliyun. com/ nexus/ content/groups/public/"
}

这里注释掉了下载缓慢的中央仓库,改用自定义的镜像仓库...

本篇给大家介绍的是开启第一个springboot项目,喜欢的朋友可以转发关注一波!!

下篇给大家介绍的内容是实现Spring Boot 版本的“Hello World”应用,大家准时学习哈!!!

应该还不至于秃头吧!

推荐阅读

一文带你走进微服务基石SpringBoot:简介+产生背景+目标+新特性

膜拜!来看大牛是如何设计微服务系统的,学会直接拥有架构师思维

一线互联网架构师,带大家深入学习微服务架构的设计原则,快上车

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值