Spring Boot是一个开源的Java基础框架,它使得创建独立的、生产级别的Spring应用变得更容易。它“跑起来”即可用,内嵌了Tomcat、Jetty等Servlet容器,无需部署WAR文件,也无需单独的Servlet容器。

环境准备

在开始之前,请确保你的开发环境中安装了以下软件:

  • Java Development Kit (JDK) 8 或更高版本
  • Maven 3.0 或更高版本
  • 一个文本编辑器或IDE(如IntelliJ IDEA或Eclipse)
  • Git

创建Spring Boot项目

我们可以通过Spring Initializr快速生成一个Spring Boot项目的基础结构。

  1. 访问 Spring Initializr
  2. 选择生成Maven项目,选择Java语言
  3. 指定项目元数据(Group, Artifact, Name, Description)
  4. 添加依赖(Dependencies),我们至少需要Spring Web依赖
  5. 点击“Generate”生成项目,下载并解压

项目架构图

图展示了Spring Boot应用的基本架构,包括启动类、控制器、服务、仓库和实体类,以及它们之间的关系。

项目结构

解压后的项目结构大致如下:

my-application/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           └── myapplication/
│   │   │               ├── MyApplication.java
│   │   │               └── controller/
│   │   │                   └── HelloController.java
│   │   └── resources/
│   │       ├── application.properties
│   │       └── static/
│   │           └── index.html
├── pom.xml
└── README.md

编写Hello World应用

1. 启动类

com.example.myapplication包中创建一个启动类MyApplication.java

1
2
3
4
5
6
7
8
9
10
11
12
package com.example.myapplication;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication // 标注这是一个Spring Boot应用
public class MyApplication {

public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args); // 启动应用
}
}

2. 控制器

com.example.myapplication.controller包中创建一个控制器类HelloController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.example.myapplication.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController // 标注这是一个REST控制器
public class HelloController {

@GetMapping("/hello") // 映射GET请求到/hello
public String sayHello() {
return "Hello, World!"; // 返回字符串
}
}

3. 运行应用

在项目根目录下运行以下命令来启动应用:

1
mvn spring-boot:run

应用启动后,访问http://localhost:8080/hello,你将看到输出Hello, World!

案例:Todo应用

1. 添加依赖

pom.xml中添加以下依赖:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<dependencies>
<!-- Spring Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Data JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- H2 Database -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>

2. 实体类

创建Todo实体类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.example.myapplication.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity // 标注这是一个JPA实体
public class Todo {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String description;
private boolean completed;

// 构造函数、getter和setter省略
}

3. 仓库接口

创建TodoRepository接口:

1
2
3
4
5
6
7
package com.example.myapplication.repository;

import com.example.myapplication.model.Todo;
import org.springframework.data.repository.CrudRepository;

public interface TodoRepository extends CrudRepository<Todo, Long> {
}

4. 服务类

创建TodoService服务类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.example.myapplication.service;

import com.example.myapplication.model.Todo;
import com.example.myapplication.repository.TodoRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class TodoService {

@Autowired
private TodoRepository todoRepository;

public List<Todo> getAllTodos() {
return todoRepository.findAll();
}

public Todo addTodo(Todo todo) {
return todoRepository.save(todo);
}

// 其他方法省略
}

5. 控制器

更新HelloControllerTodoController

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.example.myapplication.controller;

import com.example.myapplication.model.Todo;
import com.example.myapplication.service.TodoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/todos")
public class TodoController {

@Autowired
private TodoService todoService;

@GetMapping
public List<Todo> getAllTodos() {
return todoService.getAllTodos();
}

@PostMapping
public Todo addTodo(@RequestBody Todo todo) {
return todoService.addTodo(todo);
}

// 其他方法省略
}

6. 运行应用

运行应用后,你可以使用Postman或curl来测试API:

  • 获取所有Todo:GET http://localhost:8080/todos
  • 添加Todo:POST http://localhost:8080/todos,请求体为JSON格式的Todo对象。

总结

Spring Boot简化了Spring应用的创建和配置,使得开发者可以专注于业务逻辑。通过本文,你已经学会了如何创建一个简单的Spring Boot应用,并了解了一个Todo应用的实现。希望这能帮助你快速上手Spring Boot。