Spring Boot 入门与高级用法
Spring Boot 入门与高级用法
Spring Boot 是基于 Spring Framework 的一个快速开发框架,旨在简化 Spring 应用程序的创建、配置和部署。它通过提供默认配置、自动配置和内置服务器,使得开发者能够快速启动和运行 Spring 应用。本文将介绍 Spring Boot 的基本用法和一些高级特性。
1. Spring Boot 基本用法
1.1 创建 Spring Boot 项目
可以通过多种方式创建 Spring Boot 项目,包括使用 Spring Initializr 网站、IntelliJ IDEA 等工具。本文将以 Spring Initializr 为例。
访问 Spring Initializr,选择以下选项:
- Project: Maven Project
- Language: Java
- Spring Boot: 2.5.5 (或最新版本)
- Project Metadata: 填写 Group 和 Artifact
- Dependencies: 添加 Spring Web、Spring Data JPA 和 H2 Database
点击 "Generate" 按钮下载项目模板。
1.2 项目结构
解压下载的项目,项目结构如下:
my-spring-boot-app
│ pom.xml
└───src
└───main
├───java
│ └───com
│ └───example
│ └───myspringbootapp
│ │ MySpringBootAppApplication.java
└───resources
│ application.properties
1.3 编写第一个 Spring Boot 应用
MySpringBootAppApplication.java
这是 Spring Boot 应用的主类,包含 main
方法:
package com.example.myspringbootapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MySpringBootAppApplication {
public static void main(String[] args) {
SpringApplication.run(MySpringBootAppApplication.class, args);
}
}
创建一个简单的 RESTful 控制器
package com.example.myspringbootapp.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!";
}
}
运行应用
在项目根目录执行以下命令:
./mvnw spring-boot:run
打开浏览器,访问 http://localhost:8080/hello,你将看到 "Hello, Spring Boot!"。
2. Spring Boot 高级用法
2.1 使用 Spring Data JPA 进行数据访问
添加实体类
package com.example.myspringbootapp.model;
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
}
创建仓库接口
package com.example.myspringbootapp.repository;
import com.example.myspringbootapp.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}
创建服务类
package com.example.myspringbootapp.service;
import com.example.myspringbootapp.model.User;
import com.example.myspringbootapp.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> getAllUsers() {
return userRepository.findAll();
}
public User saveUser(User user) {
return userRepository.save(user);
}
}
创建控制器
package com.example.myspringbootapp.controller;
import com.example.myspringbootapp.model.User;
import com.example.myspringbootapp.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@PostMapping
public User saveUser(@RequestBody User user) {
return userService.saveUser(user);
}
}
配置 H2 数据库
在 application.properties
文件中添加以下配置:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
运行应用,打开浏览器访问 http://localhost:8080/h2-console,使用配置的数据库 URL、用户名和密码登录,可以查看数据库和数据表。
2.2 配置和使用自定义属性
在 application.properties
中添加自定义属性:
app.name=My Spring Boot Application
app.description=A simple Spring Boot application
创建配置类
package com.example.myspringbootapp.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Value("${app.name}")
private String appName;
@Value("${app.description}")
private String appDescription;
// Getters
public String getAppName() {
return appName;
}
public String getAppDescription() {
return appDescription;
}
}
使用配置类
package com.example.myspringbootapp.controller;
import com.example.myspringbootapp.config.AppConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConfigController {
@Autowired
private AppConfig appConfig;
@GetMapping("/config")
public String getConfig() {
return "App Name: " + appConfig.getAppName() + ", Description: " + appConfig.getAppDescription();
}
}
2.3 监控和管理
Spring Boot 提供了强大的监控和管理功能,可以通过 Spring Boot Actuator 实现。
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.5.5</version>
</dependency>
启用 Actuator 端点
在 application.properties
中添加以下配置:
management.endpoints.web.exposure.include=*
运行应用,打开浏览器访问 http://localhost:8080/actuator,可以查看各种监控和管理端点。
结论
Spring Boot 是一个功能强大且易于使用的框架,它可以极大地简化 Spring 应用程序的开发和部署。本文介绍了 Spring Boot 的基本用法和一些高级特性,包括使用 Spring Data JPA 进行数据访问、配置和使用自定义属性、以及监控和管理功能。通过这些功能,开发者可以更高效地构建和管理 Spring Boot 应用。希望本文对你学习和使用 Spring Boot 有所帮助。