Spring Boot框架入门介绍了如何使用Spring Boot简化开发过程,减少配置工作量,并快速构建独立的生产级应用。文章详细阐述了Spring Boot的优势、应用场景以及环境搭建步骤,包括安装JDK、配置IDE和创建项目。此外,还提供了第一个Spring Boot应用的示例,帮助读者快速上手。
Spring Boot简介Spring Boot 是一个开源的轻量级框架,它旨在简化开发过程,减少配置工作量。Spring Boot 是基于 Spring 框架开发的,支持快速构建独立的、生产级别的应用。Spring Boot 包含了自动配置、起步依赖和嵌入式服务器等特性,使得开发者可以更高效地构建应用,而无需过多关注底层配置细节。
Spring Boot 适用于各种应用场景,包括但不仅限于:
要使用 Spring Boot,首先需要安装 Java Development Kit (JDK)。这里以安装 JDK 11 为例。
JAVA_HOME
环境变量指向 JDK 安装目录。PATH
环境变量,添加 %JAVA_HOME%\bin
。java -version
推荐使用 IntelliJ IDEA 或 Spring Tool Suite(STS)作为开发 Spring Boot 项目的 IDE。
创建一个简单的 Spring Boot 应用来输出 "Hello, World!"。
创建一个 HelloController
类:
package com.example.demo; 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, World!"; } }
在 src/main/resources
目录下创建 application.properties
文件:
server.port=8080
添加主类 DemoApplication
的代码展示,确保读者可以完整地看到如何启动应用:
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
DemoApplication
),选择“Run”。http://localhost:8080/hello
,查看输出结果。@SpringBootApplication
注解。8080
端口。application.properties
中的端口号。Spring Boot 通过自动配置简化了配置过程。Spring Boot 会根据类路径中的依赖关系自动配置相应的 Bean。
spring-boot-starter-web
依赖时,Spring Boot 会自动配置 Tomcat
容器。spring-boot-starter-data-jpa
依赖时,会自动配置 JPA
相关的 Bean。Spring Boot 提供了多种起步依赖(Starter Dependencies),它们包含了构建 Spring Boot 应用所需的所有依赖。
spring-boot-starter-web
:包含构建 Web 应用所需的所有依赖。spring-boot-starter-data-jpa
:包含构建 JPA 应用所需的所有依赖。Spring Boot 支持两种配置文件格式:application.properties
和 application.yml
。
server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/dbname spring.datasource.username=root spring.datasource.password=secret
server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/dbname username: root password: secret
创建一个简单的 RESTful 服务,提供增删改查(CRUD)操作。
创建一个简单的 User
实体类:
package com.example.demo; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String email; // Getters and Setters }
创建 UserRepository
接口,继承 JpaRepository
:
package com.example.demo; import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User, Long> { }
创建 UserController
类,提供 RESTful 接口:
package com.example.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/users") public class UserController { @Autowired private UserRepository userRepository; @GetMapping public List<User> getAllUsers() { return userRepository.findAll(); } @PostMapping public User createUser(@RequestBody User user) { return userRepository.save(user); } @GetMapping("/{id}") public User getUserById(@PathVariable Long id) { return userRepository.findById(id).orElse(null); } @PutMapping("/{id}") public User updateUser(@PathVariable Long id, @RequestBody User user) { User existingUser = userRepository.findById(id).orElse(null); if (existingUser != null) { existingUser.setName(user.getName()); existingUser.setEmail(user.getEmail()); return userRepository.save(existingUser); } return null; } @DeleteMapping("/{id}") public void deleteUser(@PathVariable Long id) { userRepository.deleteById(id); } }
添加主类 DemoApplication
的代码展示:
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
Spring Data JPA 提供了一套简化了的数据库操作接口,使得数据库操作更加简单。
User
类。UserRepository
接口。Service 层
UserService
类,进行业务逻辑处理。
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> findAllUsers() {
return userRepository.findAll();
}
public User createUser(User user) {
return userRepository.save(user);
}
public User updateUser(Long id, User user) {
User existingUser = userRepository.findById(id).orElse(null);
if (existingUser != null) {
existingUser.setName(user.getName());
existingUser.setEmail(user.getEmail());
return userRepository.save(existingUser);
}
return null;
}
public void deleteUser(Long id) {
userRepository.deleteById(id);
}
}
创建一个简单的 Web 页面,展示用户列表。
Controller
UserController
,提供 Web 页面所需的接口。
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public String getAllUsers(Model model) {
List<User> users = userService.findAllUsers();
model.addAttribute("users", users);
return "users";
}
}
模板文件
src/main/resources/templates
目录下创建 users.html
文件。
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>User List</title> </head> <body> <h1>User List</h1> <table> <tr> <th>ID</th> <th>Name</th> <th>Email</th> </tr> <tr th:each="user : ${users}"> <td th:text="${user.id}"></td> <td th:text="${user.name}"></td> <td th:text="${user.email}"></td> </tr> </table> </body> </html>
添加主类 DemoApplication
的代码展示:
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
打包项目
mvn clean package
target
目录下。java -jar
命令运行打包后的 jar 文件。
java -jar target/your-app.jar
webapps
目录。Dockerfile
部署到 Docker。Dockerfile
。FROM openjdk:11-jre-slim COPY target/your-app.jar /app.jar EXPOSE 8080 CMD ["java", "-jar", "/app.jar"]
docker build
命令构建 Docker 镜像。
docker build -t your-app .
docker run
命令运行 Docker 容器。
docker run -p 8080:8080 your-app
docker-compose.yml
文件,配置应用和依赖服务。docker-compose.yml
文件:
version: '3' services: app: image: your-app ports: - "8080:8080"