Spring Boot是什么?
Spring Boot是由Pivotal团队提供的全新框架,是基于Spring的升级版。它简化了搭建Spring应用及开发过程。该框架提供了标准化配置,简化了一直受人诟病的各种繁琐、复杂的XML配置,在Spring Boot中约定优于配置。
特点:
- 简化配置,更容上手,提供大量注解,大大减少开发时间。
- 开箱即用,提供了Spring应用的各种可修改的默认配置。
- 部署简单,一键启动。
- 关注度高,使用人多,文档资料齐全。Spring Boot官方文档
- 对当下流行的微服务架构有很好的支持。
hello world程序
环境准备
- JDK: 1.8.0_92
- Maven: 3.5.0
- IDE: IntelliJ IDEA
后续会一直使用这个环境。
创建项目
这里我们使用IDEA一键创建spring boot项目。
1. New Project选择Spring Initializr,jdk版本。
2. 填写groupId、artifacte、name等信息。
3. 选择需要的Spring Boot组件。(由于我们只写一个简单的hello world,这里只选择web)
4. 项目创建好后,完整的目录结构:
编写代码
由于我们使用IDEA创建项目,IDEA已为我们自动引入了所选Spring Boot的组件,还为我们生成了启动类、单元测试类、groupId对应的包、web静态资源文件以及模板文件目录。我们只需要编写Controller,便可以完成hello world程序。
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.afei.study.springboot</groupId>
<artifactId>springboot_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot_demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
这里生成的pom文件继承自spring-boot-starter-parent
,并加入了我们选择的web组件依赖spring-boot-starter-web
。并引入了Spring boot提供的Maven Pluginspring-boot-maven-plugin
来创建可执行的jar。
由于spring-boot-starter-parent
提供了 dependencyManagement
包含了大量配置好的依赖管理,所以这里不需要申明依赖的<version>
版本号。
SpringbootDemoApplication.java
package com.afei.study.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args);
}
}
Spring Boot推荐我们将启动类放在根包目录下,也就是groupId对应的包名。
@SpringBootApplication
是@Configuration
、@EnableAutoConfiguration
、@ComponentScan
三个注解的组合。
@Configuration
:替代xml中beans,用注解的方式来装配bean。
@EnableAutoConfiguration
:自动载入程序中所需的所有Bean。
@ComponentScan
:定义自动扫描的包,默认为启动类所在的包。
HelloController.java
package com.afei.study.springboot.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("hello")
public String hello(){
return "hello, Spring Boot.";
}
}
@RestController
是@Controller
和@ResponseBody
组合。
@Controller
:定义http请求和控制器的映射关系。
@ResponseBody
: 将Controller的方法返回的对象通过HttpMessageConverter
转换为指定的格式之后,写入到response对象的body区。
@GetMapping
:是一个组合注解,其作用是将http Get请求映射到处理方法上。同理还有@PostMapping
、@PutMapping
等。
启动项目
通常我们有三种启动Spring Boot程序的方式:
1. 开发中最常用的就是直接运行启动类Application
的main方法。
2. 使用maven命令:mvn spring-boot:run。
3. 先编译成可执行的jar,再使用java -jar jar文件名
。
使用上述任何一种方式启动程序,在浏览器中访问http://localhost:8080/hello,就可以看到效果了。到此,我们已完成Spring Boot的Hello World程序啦!