Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
Boot对Spring应用的开发进行了简化,提供了模块化方式导入依赖的能力,强调了开发RESTful Web服务的功能并提供了生成可运行jar的能力,这一切都清晰地表明在开发可部署的微服务方面Boot框架是一个强大的工具。
开发Spring Boot应用
为了简化依赖图,Boot的功能是模块化的,通过导入Boot所谓的“starter”模块,可以将许多的依赖添加到工程之中。为了更容易地管理依赖版本和使用默认配置,框架提供了一个parent POM,工程可以继承它。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-juli</artifactId>
<version>7.0.59</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>7.0.59</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>1.4.1.RELEASE</version>
<scope>test</scope>
</dependency>
</dependencies>
HelloWorldController.java
package com.bytebeats.codelab.day1.controller;
import com.bytebeats.codelab.day1.service.HelloWorldService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* ${DESCRIPTION}
*
* @author Ricky Fung
* @create 2016-10-28 16:14
*/
@RestController
@RequestMapping("/spring-boot")
public class HelloWorldController {
@Autowired
private HelloWorldService helloWorldService;
@RequestMapping("hello")
public String hello(@RequestParam String name) {
return helloWorldService.getHelloMessage(name);
}
}
HelloWorldService.java
package com.bytebeats.codelab.day1.service;
import org.springframework.stereotype.Service;
/**
* ${DESCRIPTION}
*
* @author Ricky Fung
* @create 2016-10-28 16:18
*/
@Service("helloWorldService")
public class HelloWorldService {
public String getHelloMessage(String name) {
return "Hello " + name;
}
}
启动类
package com.bytebeats.codelab.day1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* Hello world!
*
*/
@SpringBootApplication
public class App {
public static void main( String[] args ) throws Exception {
SpringApplication.run(App.class, args);
}
}
启动程序
java -jar target/<sample>.jar