我们来用spring boot开发一个简单的“hello world”web应用,使用maven构建。开始之前,先检查你的java与maven的版本,看是否是spring boot1.3支持的版本:
$ java -version java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
$ mvn -v Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-12T04:58:10+08:00) Maven home: /opt/apache-maven-3.2.3 Java version: 1.8.0_45, vendor: Oracle Corporation Java home: /opt/jdk1.8.0_45/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "3.13.0-53-generic", arch: "amd64", family: "unix"
1. 使用eclipse创建一个普通的maven工程,packaging为jar,并编写如下pom.xml:
<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>net.scanner</groupId> <artifactId>hello_world</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.0.BUILD-SNAPSHOT</version> </parent> <!-- 如果你使用的是RELEASE版本,就不需要下面的配置 --> <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>
2. 添加依赖
示例中,我们在pom.xml的parent部分使用 spring-boot-starter-parent。spring-boot-starter-parent是个重要的,默认的父工程,它提供了dependency-management部分。如果我们这时候执行:
$ mvn dependency:true
你可以看到spring-boot-starter-parent,它并没有提供什么依赖jar包。如果我们向pom.xml添加spring-boot-starter-web依赖(在parent这部分之后):
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
你再次运行:
$ mvn dependency:true
那这时候日志输出就不一样了!
原来tomcat是嵌入方式使用的!
3. 写点源代码吧!
在src/main/java目录,我们创建一个java源文件:
package hello_world; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @EnableAutoConfiguration public class Example { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) { SpringApplication.run(Example.class, args); } }
@RestController是spring4.0中的注解:RestController表明该类的每个方法返回对象而不是视图,它实际就是@Controller和@ResponseBody混合使用的简写方法。@RequestMapping就不解释了,springmvc3中就有了!@EnableAutoConfiguration注解是类级别的注解,它的意思就是开启自动配置,该注解会告知Boot要采用一种特定的方式来对应用进行配置。这种方法会将其他样板式的配置均假设为框架默认的约定,当然它是基于你添加的依赖包。本例中,我们添加了spring-boot-starter-web依赖,然后嵌入式tomcat与spring MVC都自动依赖进来了,这个@EnableAutoConfiguration注解就会假设你开发的是一个web应用程序并进行自动配置。
最后是一个main方法,它是标准的java应用程序的入口。它调用springApplication.run来引导我们的应用程序,自动配置tomcat服务并启动spring。它需要Example.class作为run方法的一个参数,告诉SpringAppLication它是一个主要的spring组件。args数组作为参数是通过命令行传入的。
4. 运行示例
我们既然使用了spring-boot-starter-parent,那我们就有一个有用的run目标(maven中目标)来启动应用程序。在工程的根目录执行下面的命令:
$ mvn spring-boot:run
如果你打开浏览器输入:localhost:8080/ 你会看到输入:Hello World! 按ctrl + c可以优雅地退出!