跳到主要内容
Spring Boot 3.x 框架核心组件使用详解 | 极客日志
Java java
Spring Boot 3.x 框架核心组件使用详解 Spring Boot 3.x 框架核心组件使用详解,涵盖 Starter 起步依赖、主启动类配置、配置文件属性绑定、Bean 注册与依赖注入注解、Web 开发(RESTful 接口、全局异常处理、拦截器、跨域)、数据访问(MyBatis-Plus、事务管理)及辅助工具(热部署、Lombok、Knife4j)。重点讲解自动配置原理、多环境配置、统一异常处理及数据库操作规范,提供可直接运行的代码示例,帮助开发者快速搭建企业级后端项目。
ArchDesign 发布于 2026/3/15 更新于 2026/4/26 12 浏览前置基础
Spring Boot 的核心是约定大于配置 ,通过自动配置(AutoConfiguration) 消除 Spring 原生的繁琐 XML 配置,所有组件都基于Starter 起步依赖 引入,只需少量配置(甚至零配置)即可使用。
核心依赖:spring-boot-starter(基础核心),所有组件都基于此扩展;
开发工具:spring-boot-starter-devtools(热部署)、spring-boot-configuration-processor(配置提示);
构建方式:Maven/Gradle(本文以 Maven 为例,适配 IDEA 默认工程)。
一、核心基础组件(所有项目必用)
1. Starter 起步依赖(组件入口)
核心作用
Starter 是 Spring Boot 的组件依赖封装 ,将某个功能的所有相关依赖(如核心包、依赖包、配置包)整合为一个 Maven/Gradle 依赖,只需引入 1 个 Starter,即可自动引入该功能的所有必要依赖,避免手动管理依赖版本、解决依赖冲突。
核心设计
命名规范:官方 Starter 为spring-boot-starter-*(如spring-boot-starter-web),第三方 Starter 为*spring-boot-starter(如mybatis-spring-boot-starter);
自动配置:Starter 内置META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,指定该组件的自动配置类,Spring Boot 启动时会自动加载。
实战使用(pom.xml)
<dependency >
<groupId > org.springframework.boot</groupId >
<artifactId > spring-boot-starter</artifactId >
</dependency >
<dependency >
<groupId > org.springframework.boot</groupId >
<artifactId > spring-boot-starter-web</artifactId >
</dependency >
org.springframework.boot
spring-boot-starter-test
test
<dependency >
<groupId >
</groupId >
<artifactId >
</artifactId >
<scope >
</scope >
</dependency >
2. 主启动类(@SpringBootApplication)
核心作用 Spring Boot 项目的入口类 ,通过注解开启自动配置、组件扫描、配置属性绑定 三大核心功能,是项目启动的唯一入口。
核心注解拆解(@SpringBootApplication 是复合注解)
@SpringBootConfiguration:继承自@Configuration,标记该类为配置类 ,可在类中用@Bean声明自定义组件;
@EnableAutoConfiguration:开启自动配置 ,加载所有 Starter 的自动配置类,实现'零配置'使用组件;
@ComponentScan:开启组件扫描 ,自动扫描当前包及其子包下的@Controller/@Service/@Repository/@Component注解类,将其注册为 Spring Bean。
实战使用(主启动类代码) import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootComponentDemoApplication {
public static void main (String[] args) {
SpringApplication.run(SpringBootComponentDemoApplication.class, args);
}
}
关键注意 主启动类建议放在项目根包 (如com.example.demo),否则需用scanBasePackages手动指定扫描包,否则子包的组件无法被 Spring 扫描并注册。
3. 配置文件(application.yml/properties)
核心作用 Spring Boot 的全局配置文件 ,用于覆盖组件的默认自动配置(如端口、数据库连接、日志级别),支持yml(推荐,层级清晰) 和properties(键值对) 两种格式,项目启动时会自动加载src/main/resources/下的该文件。
配置优先级 application-dev.yml(开发环境) > application-prod.yml(生产环境) > application.yml(全局默认),可通过多环境配置 切换不同环境的配置。
核心使用
(1)基础配置(application.yml,修改默认端口 / 上下文路径)
server:
port: 8081
servlet:
context-path: /demo
spring:
application:
name: spring-boot-component-demo
(2)多环境配置(最常用,避免开发 / 生产配置混用)
新建多环境配置文件:
开发环境:application-dev.yml(本地开发,端口 8081,日志级别 DEBUG)
生产环境:application-prod.yml(线上部署,端口 80,日志级别 INFO)
在application.yml中指定激活的环境 :
spring:
profiles:
active: dev
(3)自定义配置与属性绑定(@Value/@ConfigurationProperties) 开发中常需要自定义配置(如自定义接口前缀、业务常量),Spring Boot 提供两种方式绑定到 Java 类:
**方式 2:@ConfigurationProperties(复杂配置,批量绑定)**适合多个相关自定义属性(如微信配置、OSS 配置),批量绑定到一个配置类,更规范、支持配置提示:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "wechat")
public class WechatProperties {
private String appId;
private String appSecret;
private String mchId;
public String getAppId () { return appId; }
public void setAppId (String appId) { this .appId = appId; }
public String getAppSecret () { return appSecret; }
public void setAppSecret (String appSecret) { this .appSecret = appSecret; }
public String getMchId () { return mchId; }
public void setMchId (String mchId) { this .mchId = mchId; }
}
wechat:
app-id: wx1234567890abcdef
app-secret: 1234567890abcdef1234567890abcdef
mch-id: 1234567890
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class WechatController {
@Autowired
private WechatProperties wechatProperties;
@GetMapping("/wechat/info")
public String wechatInfo () {
return "微信 AppId:" + wechatProperties.getAppId() + ",商户号:" + wechatProperties.getMchId();
}
}
步骤 4:添加配置提示依赖(可选,IDEA 中显示配置注解,避免手敲错误):
<dependency >
<groupId > org.springframework.boot</groupId >
<artifactId > spring-boot-configuration-processor</artifactId >
<optional > true</optional >
</dependency >
**方式 1:@Value(简单配置,单个属性绑定)**适合单个 / 少量自定义属性,直接在 Bean 中注入:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@Value("${app.api-prefix:/api/v1}")
private String apiPrefix;
@GetMapping("/hello")
public String hello () {
return "Hello Spring Boot! 接口前缀:" + apiPrefix;
}
}
4. 核心注解(Bean 注册与依赖注入) Spring Boot 的所有组件都基于Spring IOC 容器 ,核心是将对象交给 Spring 管理(Bean 注册) + 从 Spring 容器中获取对象(依赖注入) ,以下是最核心的注解,所有业务开发都离不开:
(1)Bean 注册注解(将类交给 Spring 管理) 标记在类 上,Spring 启动时会自动扫描并创建该类的实例,存入 IOC 容器,全局唯一(默认单例)。
注解 作用 适用场景 @Component通用 Bean 注册注解 通用工具类、非业务层类 @Controller继承自 @Component,标记控制层 接口请求处理类(接收请求、返回响应) @Service继承自 @Component,标记服务层 业务逻辑处理类(核心业务、事务控制) @Repository继承自 @Component,标记数据访问层 数据库操作类(DAO/Mapper,MyBatis 中一般用 @Mapper 替代) @Configuration标记配置类 声明自定义 Bean(如第三方组件配置、拦截器配置)
(2)依赖注入注解(从 Spring 容器中获取 Bean) 标记在字段 / 构造方法 /setter 方法 上,Spring 会自动从 IOC 容器中找到对应的 Bean,注入到当前类中,无需手动new对象,实现解耦 。
注解 作用 特点 @Autowired按类型 注入 Bean Spring 核心注解,自动匹配类型,支持required = false(非必须注入) @Resource按名称 注入 Bean(JDK 原生) 若有多个同类型 Bean,可通过name指定,如@Resource(name = "userServiceImpl") @Qualifier配合 @Autowired,按名称 注入 解决同类型多个 Bean 的注入问题,如@Autowired + @Qualifier("userServiceImpl")
(3)自定义 Bean 声明(@Bean) 标记在配置类的方法 上,用于将第三方组件 / 无注解的类 注册为 Spring Bean(如 RedisTemplate、RestTemplate),方法返回值即为 Bean 实例,方法名为 Bean 名称。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class WebConfig {
@Bean
public RestTemplate restTemplate () {
return new RestTemplate ();
}
}
@Autowired
private RestTemplate restTemplate;
二、Web 开发核心组件(后端接口必用) 基于spring-boot-starter-web,实现 RESTful 接口开发,包含MVC 核心、请求处理、响应处理、拦截器、跨域 等,是后端开发最核心的组件。
1. @RestController & @Controller(请求处理核心)
核心区别
@RestController = @Controller + @ResponseBody:返回 JSON 数据 (RESTful 接口首选),所有方法的返回值都会自动序列化为 JSON,无需手动加 @ResponseBody;
@Controller:返回视图 (传统 SSM 开发,如 JSP/Thymeleaf),适合前后端不分离项目,若需返回 JSON,需在方法上加@ResponseBody。
实战使用(RESTful 接口) import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/get/{id}")
public String getUser (@PathVariable Long id) {
return "{\"id\":" + id + ", \"name\":\"张三\", \"age\":25}" ;
}
@PostMapping("/add")
public String addUser (@RequestBody User user) {
return "新增用户成功:" + user.getName();
}
@GetMapping("/page")
public String pageQuery (@RequestParam Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize) {
return "分页查询:第" + pageNum + "页,每页" + pageSize + "条" ;
}
}
class User {
private Long id;
private String name;
private Integer age;
public Long getId () { return id; }
public void setId (Long id) { this .id = id; }
public String getName () { return name; }
public void setName (String name) { this .name = name; }
public Integer getAge () { return age; }
public void setAge (Integer age) { this .age = age; }
}
核心请求注解(@GetMapping/@PostMapping 等) 都是@RequestMapping的简化版,指定请求方式,避免在 @RequestMapping 中手动设置method = RequestMethod.GET:
@GetMapping:处理 GET 请求(查询)
@PostMapping:处理 POST 请求(新增)
@PutMapping:处理 PUT 请求(修改)
@DeleteMapping:处理 DELETE 请求(删除)
@PatchMapping:处理 PATCH 请求(局部修改)
2. 全局异常处理(@RestControllerAdvice + @ExceptionHandler)
核心作用 统一处理项目中所有的未捕获异常 ,避免接口返回默认的 500 错误页面 / 杂乱的异常信息,返回统一的 JSON 格式响应,提升接口的友好性和可维护性。
核心注解
@RestControllerAdvice:全局异常处理类注解,继承自@ControllerAdvice,配合@ExceptionHandler使用,返回 JSON 数据;
@ExceptionHandler:标记异常处理方法,指定处理的异常类型(如Exception.class处理所有异常,NullPointerException.class处理空指针异常)。
实战使用(统一异常返回) import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.util.HashMap;
import java.util.Map;
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public Map<String, Object> handleAllException (Exception e) {
Map<String, Object> result = new HashMap <>();
result.put("code" , HttpStatus.INTERNAL_SERVER_ERROR.value());
result.put("msg" , "服务器内部错误:" + e.getMessage());
result.put("data" , null );
return result;
}
@ExceptionHandler(BusinessException.class)
public Map<String, Object> handleBusinessException (BusinessException e) {
Map<String, Object> result = new HashMap <>();
result.put("code" , e.getCode());
result.put("msg" , e.getMsg());
result.put("data" , null );
return result;
}
@ExceptionHandler(NullPointerException.class)
public Map<String, Object> handleNPE (NullPointerException e) {
Map<String, Object> result = new HashMap <>();
result.put("code" , 400 );
result.put("msg" , "空指针异常:" + e.getMessage());
result.put("data" , null );
return result;
}
}
class BusinessException extends RuntimeException {
private Integer code;
private String msg;
public BusinessException (Integer code, String msg) {
super (msg);
this .code = code;
this .msg = msg;
}
public Integer getCode () { return code; }
public String getMsg () { return msg; }
}
使用自定义异常(业务层中抛出) @Service
public class UserService {
public void deleteUser (Long id) {
if (id == null || id <= 0 ) {
throw new BusinessException (400 , "用户 ID 不合法" );
}
}
}
3. 拦截器(Interceptor)
核心作用 拦截接口请求,在请求处理前、处理后、视图渲染后(Rest 接口无此步骤) 执行自定义逻辑,如登录验证、接口限流、日志记录、参数校验 等。
实现步骤
实现HandlerInterceptor接口,重写拦截方法;
在配置类中实现WebMvcConfigurer接口,重写addInterceptors方法,注册拦截器并指定拦截 / 放行路径。
实战使用(登录验证拦截器)
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle (HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getHeader("token" );
if (token == null || token.isEmpty()) {
response.setStatus(401 );
response.getWriter().write("{\"code\":401, \"msg\":\"未登录,请先登录\", \"data\":null}" );
return false ;
}
return true ;
}
@Override
public void postHandle (HttpServletRequest request, HttpServletResponse response, Object handler, org.springframework.web.servlet.ModelAndView modelAndView) throws Exception {
HandlerInterceptor.super .postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion (HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
HandlerInterceptor.super .afterCompletion(request, response, handler, ex);
}
}
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors (InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor ())
.addPathPatterns("/**" )
.excludePathPatterns("/user/login" , "/user/register" );
}
}
4. 跨域配置(CORS)
核心作用
实战实现(两种方式,推荐全局配置)
方式 1:全局跨域配置(推荐,作用于所有接口) 在WebMvcConfig中重写addCorsMappings方法:
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings (CorsRegistry registry) {
registry.addMapping("/**" )
.allowedOriginPatterns("*" )
.allowedMethods("GET" , "POST" , "PUT" , "DELETE" , "PATCH" )
.allowedHeaders("*" )
.allowCredentials(true )
.maxAge(3600 );
}
}
方式 2:局部跨域配置(作用于单个接口 / 控制器) 用@CrossOrigin注解,标记在控制器 / 方法上:
@RestController
@RequestMapping("/user")
@CrossOrigin(origins = "*", maxAge = 3600)
public class UserController {
@GetMapping("/get/{id}")
@CrossOrigin(origins = "http://localhost:3000")
public String getUser (@PathVariable Long id) {
return "{\"id\":" + id + ", \"name\":\"张三\"}" ;
}
}
三、数据访问核心组件(操作数据库必用) Spring Boot 提供了多种数据访问组件,适配不同的数据库操作框架,最常用的是 MyBatis-Plus(简化 MyBatis) 和Spring Data JPA(ORM 框架) ,以下讲解基于MyBatis-Plus (企业开发主流,比原生 MyBatis 少写 80% 代码)。
1. 核心依赖(MyBatis-Plus + 数据库驱动 + 连接池)
<dependency >
<groupId > com.baomidou</groupId >
<artifactId > mybatis-plus-boot-starter</artifactId >
<version > 3.5.5</version >
</dependency >
<dependency >
<groupId > com.mysql</groupId >
<artifactId > mysql-connector-j</artifactId >
<scope > runtime</scope >
</dependency >
<dependency >
<groupId > com.alibaba</groupId >
<artifactId > druid-spring-boot-starter</artifactId >
<version > 1.2.20</version >
</dependency >
2. 数据库配置(application.yml) 配置数据库连接、MyBatis-Plus、连接池参数:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
username: root
password: 123456
druid:
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 60000
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.demo.entity
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
3. 核心注解与使用(MyBatis-Plus)
(1)实体类注解(@TableName/@TableId/@TableField) import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("t_user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
@TableField("user_name")
private String userName;
private Integer age;
private String email;
}
(2)Mapper 接口(继承 BaseMapper,零 SQL 实现 CRUD) MyBatis-Plus 的核心,继承BaseMapper<T>即可获得单表 CRUD 所有方法 ,无需手动编写 Mapper 接口和 XML:
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper <User> {
}
(3)业务层使用(注入 Mapper,直接调用方法) import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public boolean addUser (User user) {
return userMapper.insert(user) > 0 ;
}
public User getUserById (Long id) {
return userMapper.selectById(id);
}
public List<User> listUser (String name) {
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper <>();
wrapper.like(User::getUserName, name)
.gt(User::getAge, 20 );
return userMapper.selectList(wrapper);
}
public boolean updateUser (User user) {
return userMapper.updateById(user) > 0 ;
}
public boolean deleteUser (Long id) {
return userMapper.deleteById(id) > 0 ;
}
}
4. 事务管理(@Transactional)
核心作用 保证多个数据库操作的原子性 (要么全部成功,要么全部失败),避免出现数据不一致(如转账时扣了 A 的钱,没加 B 的钱)。
实战使用 标记在服务层方法 上(必须在服务层,控制器层无效),Spring 会自动为该方法添加事务支持:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
@Transactional(rollbackFor = Exception.class)
public boolean addUserAndLog (User user) {
userMapper.insert(user);
return true ;
}
}
核心属性
rollbackFor = Exception.class:指定所有异常都回滚 (默认仅RuntimeException和Error回滚,编译时异常如IOException不回滚,建议必加);
propagation:事务传播行为(如REQUIRED:默认,有事务则加入,无则新建;SUPPORTS:有事务则加入,无则无事务);
readOnly = true:只读事务(仅查询,提升性能)。
四、常用辅助组件(提升开发效率)
1. 热部署(spring-boot-starter-devtools)
核心作用 修改代码 / 配置后,无需手动重启项目 ,自动重启 Spring Boot 应用,提升开发效率(仅开发环境使用,生产环境禁用)。
依赖与配置
<dependency >
<groupId > org.springframework.boot</groupId >
<artifactId > spring-boot-starter-devtools</artifactId >
<scope > runtime</scope >
<optional > true</optional >
</dependency >
spring:
devtools:
restart:
enabled: true
additional-paths: src/main/java
exclude: static/**,templates/**
开启自动编译:File → Settings → Build, Execution, Deployment → Compiler → 勾选Build project automatically ;
开启高级自动编译:按住Ctrl+Alt+Shift+/ → 选择 Registry → 勾选compiler.automake.allow.when.app.running 。
2. Lombok(简化代码,消除样板代码)
核心作用 通过注解 替代 Java 中繁琐的getter/setter/toString/ 构造方法 ,减少代码量,提升开发效率(需安装 IDEA Lombok 插件)。
核心依赖与注解
<dependency >
<groupId > org.projectlombok</groupId >
<artifactId > lombok</artifactId >
<optional > true</optional >
</dependency >
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.ToString;
@TableName("t_user")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String userName;
private Integer age;
private String email;
}
@Slf4j:自动生成日志对象log,替代LoggerFactory.getLogger(类名.class);
@Builder:开启建造者模式,可通过User.builder().id(1L).userName("张三").build()创建对象;
@NonNull:标记字段为非空,赋值为 null 时抛出空指针异常。
3. 接口文档(Knife4j,替代 Swagger)
核心作用 自动生成RESTful 接口文档 ,支持在线调试、接口测试、文档导出 ,替代传统的 Word 文档,实现接口文档与代码同步更新(Swagger3 的增强版,更适配 Spring Boot 3+)。
核心依赖与配置
<dependency >
<groupId > com.github.xiaoymin</groupId >
<artifactId > knife4j-spring-boot-starter</artifactId >
<version > 4.4.0</version >
</dependency >
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
@Configuration
@EnableWebMvc
@EnableKnife4j
public class Knife4jConfig {
@Bean
public OpenAPI openAPI () {
return new OpenAPI ()
.info(new Info ()
.title("Spring Boot 组件演示接口文档" )
.description("Spring Boot 核心组件实战接口" )
.version("1.0.0" ));
}
}
knife4j:
enable: true
openapi:
title: Spring Boot 组件演示接口文档
description: 核心组件实战接口
version: 1.0 .0
spring:
profiles:
active: dev
接口注解(标记接口 / 参数,生成更详细的文档) import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
@Operation(summary = "根据 ID 查询用户", description = "传入用户 ID,返回用户详细信息")
@Parameters({@Parameter(name = "id", description = "用户 ID", required = true)})
@GetMapping("/get/{id}")
public User getUser (@PathVariable Long id) {
return new User (id, "张三" , 25 , "[email protected] " );
}
}
访问文档 项目启动后,访问:http://localhost:8081/doc.html(替换为自己的端口 / 上下文路径),即可看到接口文档,支持在线调试(直接填写参数,点击'发送'即可测试接口)。
五、Spring Boot 组件核心配合逻辑(一张图理解) ┌─────────────────────────────────────────────────────────┐
│ 客户端请求(浏览器/前端/Postman) │
└───────────────────────────┬─────────────────────────────┘
│
┌───────────────────────────▼─────────────────────────────┐
│ 服务器(Tomcat,由 spring-boot-starter-web 自动嵌入) │
└───────────────────────────┬─────────────────────────────┘
│
┌───────────────────────────▼─────────────────────────────┐
│ 拦截器(Interceptor):登录验证/日志记录/限流 │
└───────────────────────────┬─────────────────────────────┘
│
┌───────────────────────────▼─────────────────────────────┐
│ 控制器(@RestController):接收请求/参数绑定/返回响应 │
└───────────────────────────┬─────────────────────────────┘
│
┌───────────────────────────▼─────────────────────────────┐
│ 服务层(@Service):业务逻辑处理 + 事务管理(@Transactional)│
└───────────────────────────┬─────────────────────────────┘
│
┌───────────────────────────▼─────────────────────────────┐
│ 数据访问层(@Mapper/MyBatis-Plus):操作数据库 │
└───────────────────────────┬─────────────────────────────┘
│
┌───────────────────────────▼─────────────────────────────┐
│ 数据库(MySQL/Redis) │
└─────────────────────────────────────────────────────────┘
全局异常处理器(@RestControllerAdvice):捕获所有环节的异常,返回统一 JSON;
配置文件(application.yml):覆盖所有组件的默认配置;
Spring IOC 容器:管理所有 Bean,实现依赖注入和解耦。
六、总结(核心关键点)
Spring Boot 核心思想 :约定大于配置 ,通过Starter 起步依赖 和自动配置 消除繁琐配置,专注业务开发;
基础三件套 :主启动类(@SpringBootApplication)+ 配置文件(application.yml)+ 核心注解(Bean 注册 / 依赖注入),所有项目必用;
Web 开发核心 :@RestController 实现 RESTful 接口,@RestControllerAdvice 实现全局异常处理,Interceptor 实现请求拦截,CORS 解决跨域;
数据访问核心 :MyBatis-Plus 简化数据库操作,@Transactional 保证事务原子性,Druid 作为高性能连接池;
效率提升组件 :Lombok 消除样板代码,devtools 实现热部署,Knife4j 自动生成接口文档,都是企业开发必备;
核心原则 :
所有组件通过Starter 引入,避免手动管理依赖;
所有自定义 Bean 通过 \@Configuration + @Bean\ 声明,或通过 @Component 系列注解注册;
所有依赖通过 \@Autowired/@Resource\ 注入,无需手动 new,实现解耦;
开发环境与生产环境通过多环境配置 分离,避免配置混用。
以上就是 Spring Boot 最核心、最常用的组件使用详解,覆盖了从基础项目搭建到后端接口开发、数据库操作、效率提升的全流程,所有代码都可直接复制到 Spring Boot 3.2.x 项目中使用,适配企业开发的主流场景。
相关免费在线工具 Keycode 信息 查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
Escape 与 Native 编解码 JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
JavaScript / HTML 格式化 使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
JavaScript 压缩与混淆 Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online