SpringBoot初学

《Spring Boot官方文档》开始Spring Boot

Spring Boot介绍

Spring Boot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需”just run”。 我们为Spring平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始。多数Spring Boot应用需要很少的Spring配置。

你可以使用Spring Boot创建Java应用,并使用 java -jar启动它或采用传统的war部署方式。我们也提供了一个运行”spring脚本”的命令行工具。

我们主要的目标是:

  • 为所有的Spring开发提供一个从根本上更快的和广泛使用的入门经验。
  • 开箱即用,但你可以通过不采用默认设置来摆脱这种方式。
  • 提供一系列大型项目常用的非功能性特征(比如,内嵌服务器,安全,指标,健康检测,外部化配置)。
  • 绝对不需要代码生成及XML配置。

系统要求

默认情况下,Spring Boot 1.3.0.BUILD-SNAPSHOT 需要Java7和Spring框架4.1.3或以上。你可以在Java6下使用Spring Boot,不过需要添加额外配置。构建环境明确支持的有Maven(3.2+)和Gradle(1.12+)。

注:尽管你可以在Java6或Java7环境下使用Spring Boot,通常我们建议你如果可能的话就使用Java8。

Servlet容器

下列内嵌容器支持开箱即用(out of the box):

名称Servlet版本Java版本
Tomcat 83.1Java 7+
Tomcat 73.0Java 6+
Jetty 93.1Java 7+
Jetty 83.0Java 6+
Undertow 1.13.1Java 7+

你也可以将Spring Boot应用部署到任何兼容Servlet 3.0+的容器。

Spring Boot安装

Spring Boot可以跟典型的Java开发工具一块使用或安装为一个命令行工具。不管怎样,你将需要安装 Java SDK v1.6或更高版本。在开始之前,你需要检查下当前安装的Java版本:

$ java -version

如果你是一个Java新手,或你只是想体验一下Spring Boot,你可能想先尝试Spring Boot CLI,否则继续阅读经典地安装指南。

注:尽管Spring Boot兼容Java 1.6,如果可能的话,你应该考虑使用Java最新版本。

Spring Boot CLI安装

Spring Boot是一个命令行工具,用于使用Spring进行快速原型搭建。它允许你运行 Groovy脚本,这意味着你可以使用类Java的语法,并且没有那么多的模板代码。

你没有必要为了使用Spring Boot而去用CLI,但它绝对是助力Spring应用的最快方式。

如果你的环境是Mac,并使用 Homebrew,想要安装Spring Boot CLI只需如下操作:

$ brew tap pivotal/tap
$ brew install springboot

Homebrew将把spring安装到 /usr/local/bin下。

注:如果该方案不可用,可能是因为你的brew版本太老了。你只需执行 brew update并重试即可。

下面是一个相当简单的web应用,你可以用它测试你的安装是否成功。创建一个名叫 app.groovy的文件:

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

然后简单地从一个shell中运行它:

$ spring run app.groovy

注:当你首次运行该应用时将会花费一点时间,因为需要下载依赖。后续运行将会快很多。

在你最喜欢的浏览器中打开localhost:8080,然后你应该看到以下输出:

Hello World!
开发你的第一个Spring Boot应用

让我们使用Java开发一个简单的”Hello World!” web应用,来强调下Spring Boot的一些关键特性。我们将使用Maven构建该项目,因为大多数IDEs都支持它。

注: spring.io网站包含很多使用Spring Boot的”入门”指南。如果你正在找特定问题的解决方案,可以先去那瞅瞅。

在开始前,你需要打开一个终端,检查是否安装可用的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

注:该示例需要创建自己的文件夹。后续的操作假设你已创建一个合适的文件夹,并且它是你的“当前目录”。

编写代码

为了完成应用程序,我们需要创建一个单独的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);
	}
}

尽管这里没有太多代码,但很多事情正在发生。让我们分步探讨重要的部分。

我们的Example类上使用的第一个注解是 @RestController。这被称为一个构造型(stereotype)注解。它为阅读代码的人们提供建议。对于Spring,该类扮演了一个特殊角色。在本示例中,我们的类是一个web @Controller,所以当处理进来的web请求时,Spring会询问它。

@RequestMapping注解提供路由信息。它告诉Spring任何来自”/”路径的HTTP请求都应该被映射到 home方法。 @RestController注解告诉Spring以字符串的形式渲染结果,并直接返回给调用者。

注: @RestController@RequestMapping注解是Spring MVC注解(它们不是Spring Boot的特定部分)。

第二个类级别的注解是 @EnableAutoConfiguration。这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于 spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。

Starter POMs和Auto-Configuration:设计auto-configuration的目的是更好的使用”Starter POMs”,但这两个概念没有直接的联系。你可以自由地挑选starter POMs以外的jar依赖,并且Spring Boot将仍旧尽最大努力去自动配置你的应用。

我们的应用程序最后部分是main方法。这只是一个标准的方法,它遵循Java对于一个应用程序入口点的约定。我们的main方法通过调用run,将业务委托给了Spring Boot的SpringApplication类。SpringApplication将引导我们的应用,启动Spring,相应地启动被自动配置的Tomcat web服务器。我们需要将 Example.class作为参数传递给run方法来告诉SpringApplication谁是主要的Spring组件。为了暴露任何的命令行参数,args数组也会被传递过去。

到此我们的应用应该可以工作了。由于使用了 spring-boot-starter-parentPOM,这样我们就有了一个非常有用的run目标,我们可以用它启动程序。在项目根目录下输入 mvn spring-boot:run来启动应用:

$ mvn spring-boot:run

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

如果使用一个浏览器打开 localhost:8080,你应该可以看到以下输出:

Hello World!

点击 ctrl-c温雅地关闭应用程序。

让我们通过创建一个完全自包含的可执行jar文件来结束我们的示例,该jar文件可以在生产环境运行。可执行jars(有时候被成为胖jars “fat jars”)是包含你的编译后的类和你的代码运行所需的依赖jar的存档。

可执行jars和Java:Java没有提供任何标准的加载内嵌jar文件(即jar文件中还包含jar文件)的方法。如果你想发布一个自包含的应用这就是一个问题。为了解决该问题,很多开发者采用”共享的”jars。一个共享的jar简单地将来自所有jars的类打包进一个单独的“超级jar”。采用共享jar方式的问题是很难区分在你的应用程序中可以使用哪些库。在多个jars中如果存在相同的文件名(但内容不一样)也会是一个问题。Spring Boot采取一个不同的途径,并允许你真正的内嵌jars。

为了创建可执行的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>

注: spring-boot-starter-parentPOM包含用于绑定repackage目标的 <executions>配置。如果你不使用parent POM,你将需要自己声明该配置。具体参考 插件文档

保存你的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.3.0.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

在target目录下,你应该也能看到一个很小的名为 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.3.0.BUILD-SNAPSHOT)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)

和以前一样,点击 ctrl-c来温柔地退出程序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值