本节描述如何开发一个简单的 “Hello World!” web 应用,通过应用来强调 Spring Boot 的一些关键特性。由于大多数 IDE 都支持 Maven,因此我们用 Maven 来构建这个项目。
在开始之前,打开终端来检查一下你已经安装了有效的 Java 版本和 Maven 版本: $ java -version java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) $ mvn -v Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00) Maven home: /usr/local/Cellar/maven/3.3.9/libexec Java version: 1.8.0_102, vendor: Oracle Corporation
我们需要先创建一个 Maven <?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>2.1.0.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>https://repo.spring.io/snapshot</url> <snapshots><enabled>true</enabled></snapshots> </repository> <repository> <id>spring-milestones</id> <url>https://repo.spring.io/milestone</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-snapshots</id> <url>https://repo.spring.io/snapshot</url> </pluginRepository> <pluginRepository> <id>spring-milestones</id> <url>https://repo.spring.io/milestone</url> </pluginRepository> </pluginRepositories> </project>
前面的清单应该给你一个可以工作的构建,你可以通过运行
Spring Boot 提供了大量启动器,以便添加 jar 到类路径中。示例应用已经在 POM 的
其它的启动器简单的提供了开发特定类型应用时可能需要的依赖项。由于我们正在开发一个 web 应用,我们将添加 $ mvn dependency:tree [INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
如果你再次运行
为了完成我们的应用,我们需要创建一个 Java 文件。Maven 默认从 import org.springframework.boot.*; import org.springframework.boot.autoconfigure.*; 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); } } 尽管这里没有太多的代码,但是发生了许多事情。我们将在后面一些小节一步步浏览这些重要的部分。
在
第二个类级别的注解是
此时我们的应用应该工作了。既然我们已经使用了 $ mvn spring-boot:run . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.0.BUILD-SNAPSHOT) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.222 seconds (JVM running for 6.514)
如果你在浏览器中打开 Hello World! 适当的退出应用程序请使用 通过创建一个在生产中能运行的完整的自包含可执行的 jar 文件来结束我们的例子。可执行 jar(有时称为 “fat jars”)是包含编译的类和代码运行所需要的所有 jar 依赖的归档文件。
为了创建可执行 jar,我们需要添加 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
保存你的 $ 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:2.1.0.BUILD-SNAPSHOT:repackage (default) @ myproject --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------
如果你看一下 $ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
你在
要运行这个应用,请使用 $ java -jar target/myproject-0.0.1-SNAPSHOT.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.0.BUILD-SNAPSHOT) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.536 seconds (JVM running for 2.864)
像前面一样,适当的退出应用程序请使用 希望这部分内容给你提供了一些 Spring Boot 的基本知识,也让你以自己的方式写了自己的应用程序。如果你是一个面向任务的开发人员,你可能想跳到 spring.io ,找出一些 新手入门 指南来解决特定的 “用 Spring 怎样做” 的问题;我们也提供了 Spring Boot 的 “How-to” 参考文档。 Spring Boot 仓库 也有你可以运行的 一些示例。示例是独立于其它代码的(运行或使用示例时你不需要构建其它的内容)。 此外,按逻辑接下来是阅读 章节 III, “使用 Spring Boot”。如果你真的不耐烦,也可以跳过这部分,直接阅读 Spring Boot 特性 。 |