11.1 创建POM
我们需要通过创建一个Maven的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>2.0.1.RELEASE</version>
</parent>
<!-- Additional lines to be added here... -->
</project>
上述的列表能够让你有一个可行的构建。你可以通过运行mvn package(目前,你可以无视“jar will be empty - no content was marked for inclusion!”的警告)
在这节,你可以导入项目到IDE中(大部分现代的Java IDE都内置了对Maven的支持)
11.2 添加依赖
Spring Boot提供了一系列的Starters使你能添加jar包到classpath中。我们的应用已经在POM中的parent节点使用了spring-boot-starter-parent。它是一个特殊的starter,能够提供有用的Maven默认值。它同时也提供依赖管理,你就可以省略依赖的versions标签。
其他的Starters提供你在开发特殊种类应用所需的依赖。因为我们开发的是一个网页应用,所以添加了spring-boot-starter-web这个依赖。在此之前,我们可以通过运行以下的命令来查看目前的项目依赖
$ mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
命令mvn dependency:tree打印了一个树形的项目依赖。你可以看到spring-boot-web-starter它自身并不提供依赖。为了添加所需的依赖,编辑你的pom.xml并立即在parent节下面添加以下的依赖spring-boot-starter-web
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
如果你再次运行mvn dependency:tree的话,你可以看到一系列额外的依赖,包括Tomcat web服务器和Spring Boot
11.3 编写代码
为了完成我们的程序,我们需要创建一个Java文件。Maven默认从src/main/java中编译资源,所以你需要创建那样的文件目录结构然后添加一个名为src/main/java/Example.java的文件并包含以下代码:
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotion.*;
@RestController
@EnableAutoConfiguration
public class Example{
@RequestMapping("/")
String home(){
return "Hello World";
}
public static void main(String[] args) throws Exception{
SpringApplication.run(Example.class,args)
}
}
虽然这里没有很多的代码,但却发生很多我们看不到的事情,我们在不知不觉中经历了下一些节章节中重要的部分。
11.3.1 @RestController和@RequestMapping 注解
在我们的Example类中第一个注解就是@RestController.我们都知道它是一个固定的注解。它为阅读代码的人提供了暗示,对Spring来说这个类扮演了重要的角色。在这个例子中,我们的类是一个web @Controller ,所以在处理发起的web请求时,Spring就解析它们。
@ReqeustMapping注解提供了路由信息。它告诉Spring任何/路径的HTTP请求都应该被映射到home方法中。@RestController注解则告知Spring将字符串结果直接返回给请求者。
@RestController和@RequestMapping注解都是Spring MVC注解(它们并不是Spring Boot特有的)。详细信息请阅读MVC section中的Spring参考文档。
11.3.2 @EnableAutoConfiguration注解
第二个类级的注解就是@EnableAutoConfiguration。这个注解告知Spring Boot去“猜测”你想怎样配置Spring,基于你添加的jar依赖。由于spring-boot-starter-web添加了Tomcat和Spring MVC,自动配置则根据它假设你正在开发一个web程序
Starters和Auto-Configuration
自动配置是设计来搭配Starters更好工作的,但这两个概念并不是直接捆绑在一起的。你可以随心选择starters以外的jar依赖。Spring Boot照样能很好地自动配置你的应用。
11.3.3 main方法
关于我们应用的最后一部分是main方法,这就是应用入口的一个标准方法,它遵循Java的惯例。我们通过调用run将main方法委托给了SpringApplication类。SpringApplication启动我们的应用,开启Spring,相应地启动自动配置好的Tomcat web服务器。我们需要将Example.class作为一个参数传给run方法以告知SpringApplication哪个是基本的Spirng组件。通过args数组暴露任何的命令行参数。
网友评论