《Spring Boot官方指南》(二)入门(二)

3.2.5 命令行补全工具

Spring Boot CLI附带了一些脚本,这些脚本为BASH 和zsh提供了命令行补全功能。在任何shell里面都可以source到这些脚本(也叫spring),也可以初始化到个人或者系统级别的命令行工具里面。在Debian系统里面,系统级别的脚本在这个路径:/shell-completion/bash,shell程序启动以后,这里面的所有脚本都可以执行。例如,您已经使用SDKMAN!安装了这些脚本,为了手动执行他们,可以这样操作:

$ . ~/.sdkman/candidates/springboot/current/shell-completion/bash/spring
$ spring <HIT TAB HERE>
  grab  help  jar  run  test  version
[Note]Note
如果您使用Homebrew或者MacPorts安装了Spring Boot CLI,这些命令行补全脚本已经自动注入到了您的shell程序里面。

3.2.6 快速开始Spring CLI实例

这是一个极其简单的Web应用程序,可以用来验证您的安装是否正确。新建一个文件,文件名是app.groovy

@RestController
class ThisWillActuallyRun {

    @RequestMapping("/")
    String home() {
        "Hello World!"
    }

}

然后简单运行一下这个命令:

$ spring run app.groovy
[Note]Note
第一次运行这个应用程序,要下载一些依赖项目,将会耗费一些时间。以后再运行的话就会快很多了。

打开您的浏览器访问localhost:8080,应该可以得到下面的内容:

Hello World!

3.3 升级旧版本的Spring Boot

如果想要从旧版本的Spring Boot升级,检查一下存放在这里project wiki 的 “release notes”。您可以找到升级信息与每个版本的“新的和值得关注的”功能列表以及说明。

使用相关的包管理工具升级您已经使用命令行安装过的早期版本(比如,brew upgrade),另外,如果您是手动安装的CLI,阅读这个标准说明,同时记得更新环境变量PATH的值,以便移除旧版本的引用。

4. 开发第一个Spring Boot应用程序

用Java语言开发一个简单的Web应用程序“Hello World!”,我们将会特别提到一些Spring Boot关键特性。就用Maven来构建这个项目,因为很多IDE都支持Maven。

[Tip]Tip
这个网站spring.io有很多使用了Spring Boot的 “入门”级别教程。如果需要解决个别的问题,可以先去这个网站找找看。可以简化下面的开发步骤。访问网站start.spring.io,在依赖搜索里面选择web启动。这样就可以自动生成一个新的项目框架,以便您以恰当的方式开始编写您的代码。更多有关的细节,可以查看文档

在我们开始之前,打开终端确认您已经安装了恰当Java和Maven版本。

$ java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
$ mvn -v
Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T13:58:10-07:00)
Maven home: /Users/user/tools/apache-maven-3.1.1
Java version: 1.7.0_51, vendor: Oracle Corporation
[Note]Note
这个实例创建在自己的目录中。接下来内容假定您已经创建好了恰当的目录,这个目录叫“当前目录”。

4.1 创建POM

我们从创建一个Mavenpom.xml文件开始。pom.xml是用来构建您的项目的描述性文件。用文本编辑器把下面的内容输入到这个文件。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>myproject</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.1.BUILD-SNAPSHOT</version>
    </parent>

    <!-- Additional lines to be added here... -->

    <!-- (you don't need this if you are using a .RELEASE version) -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
</project>

像这样,应该可以进行构建工作了,运行一下命令mvn package看看输出信息(现在暂时忽略这个警告信息“jar will be empty – no content was marked for inclusion!”)。

[Note]Note
现在您也可以把这个项目导入进入一个IDE了(大多数的现代JAVA IDE内置了Maven)。为了方便,我们继续使用纯文本编辑器来开发这个例子。

4.2 添加classpath依赖

Spring Boot提供了一些“Starters”,让您方便把jar文件添加到您的classpath。我们的实例已经在POM文件的parent部分添加了
spring-boot-starter-parentspring-boot-starter-parent是一个添加了一些默认Maven配置的特殊的starter。也添加了dependency-management部分,这个部分可以让您省掉某些依赖项的version标签。

其他的 “Starters”添加了在您开发其他特定类型应用程序的时候,您很可能需要添加的一些依赖项。我们目前正在开发Web应用,我们需要添加依赖项spring-boot-starter-web,不过我们先通过下面的方式看看目前的情况。

$ mvn dependency:tree

[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

mvn dependency:tree命令输出了项目依赖项的树状示意图。您会发现spring-boot-starter-parent本身并没有引入任何依赖。编辑pom.xml文件, 把spring-boot-starter-web依赖添加到parent部分的下面:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

再次运行一下mvn dependency:tree,您可以发现现在增加了一些依赖项,包括Tomcat Web服务器和Spring Boot。

4.3 编写代码

需要编写一个简单的Java文件来完成我们的应用程序。Maven默认在src/main/java这个目录下编译源文件,所以您创建好目录,然后新建一个源文件src/main/java/Example.java

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@RestController
@EnableAutoConfiguration
public class Example {

    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Example.class, args);
    }

}

虽然代码量不多,不多其实内容很丰富。我们逐步理解一下关键步骤。

4.3.1 @RestController和@RequestMapping注解

Example类的第一个注解是@RestController。这叫做构造型注解。它提示我们,对Spring来说,这个类扮演了特殊的角色,现在,这个类是一个Web控制器,Spring将会使用它来处理Web请求。

@RequestMapping注解展示了 “routing”信息。它告知Spring路径为“/”的HTTP请求都会映射到home方法。@RestController告知Spring直接将结果字符串返回给请求方。

[Tip]Tip
@RestController@RequestMapping注解属于 Spring MVC(它们不属于Spring Boot).更多资料,可以查看Spring参考文档的MVC 部分

4.3.2 @EnableAutoConfiguration注解

第二个类级别的注解是@EnableAutoConfiguration。 这个注解告知Spring Boot自己 “判断”您是如何配置Spring的,这基于您添加的依赖项。因为依赖项spring-boot-starter-web添加了Tomcat和Spring MVC,所以@EnableAutoConfiguration注解会判断您是在开发Web应用程序并且引入了Spring。

4.3.3 “main”方法

应用程序的最后一部分是main方法。这只是Java规范的一个标准的应用程序入口方法。我们的main方法委托了SpringApplication类去调用run方法完成这个功能。SpringApplication会启动我们的应用程序,启动Spring去开启自配置的Tomcat Web服务器。我们需要把Example.class作为参数传送到run方法,告知SpringApplication这是一个主要是的Spring组件。args字符串数组也传入了,以处理命令行提供的参数。

4.4 运行这个例子

现在我们的程序应该可以工作了。因为我们在POM文件里面使用了spring-boot-starter-parent,所以我们可以使用run指令来启动应用程序了。在项目根目录输入mvn spring-boot:run启动应用程序:

$ mvn spring-boot:run

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v1.4.1.BUILD-SNAPSHOT)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)

打开浏览器访问localhost:8080,您应该可以看到输出了下面的内容:

Hello World!

敲击ctrl-c就能退出程序了。

4.5 创建可执行jar文件

就像生产一个真正的软件产品,我们创建一个完整自足的可执行jar文件,把我们的第一个实例完成。可执行的jar文件(有时候我们也叫“富jar文件”)是一个归档文件,包含了编译好的类文件与我们运行程序所需要的所有jar依赖项。

为了创建可执行jar文件,我们把spring-boot-maven-plugin添加到pom.xml。把下面的代码添加到dependencies部分下面:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
[Note]Note
spring-boot-starter-parentPOM包含绑定到repackage目标的<executions>配置。如果不使用parentPOM,你需要自己声明该配置,具体参考插件文档

保存pom.xml,并从命令行运行mvn package

$ mvn package

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:1.4.1.BUILD-SNAPSHOT:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

如果查看target目录,你应该可以看到myproject-0.0.1-SNAPSHOT.jar,该文件大概有10Mb。想查看内部结构,可以运行jar tvf

$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar

在该目录下,你应该还能看到一个很小的名为myproject-0.0.1-SNAPSHOT.jar.original的文件, 这是在Spring Boot重新打包前,Maven创建的原始jar文件。

使用java -jar命令运行该程序:

$ java -jar target/myproject-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v1.4.1.BUILD-SNAPSHOT)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)

正如刚才一样,敲击ctrl-c退出应用。

5. 接下来阅读什么

希望本章的内容已经让您理解了部分Spring Boot的基础知识,并且掌握了以您的方式开发应用程序的方法。如果您面向任务的类型的开发人员,您可能想要直接跳到spring.io,查阅一些解决“怎样和Spring一起工作”这个问题的入门教程。我们也有一些Spring Boot定制的怎么做的参看文档。

Spring Boot仓库也可以运行的一些例子。这些例子和其他代码无关的(也就是说您不需要构建其他的代码就能运行或者使用这些例子)。

另外,按照顺序,接下来的内容是Part III, “Using Spring Boot”.。如果您真的缺乏耐心,可以继续往前,阅读Spring Boot特性

 转载自 并发编程网 - ifeve.com

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值