Java系列知识之 ~ Spring 与 Spring Boot 常用注解对比说明 - 实践

Spring 与 Spring Boot 常用注解对比说明

注解

所属框架

定义

主要作用

使用场景

示例代码

@Component

Spring

标识一个类为 Spring 管理的组件

注册 Bean 到容器,由 Spring 创建和管理对象

工具类、通用类

@Component public class MyUtil {}

@Service

Spring

业务逻辑层注解(@Component 派生)

表示该类属于业务逻辑层,由 Spring 管理

用户注册、订单处理等业务逻辑

@Service public class UserService {}

@Repository

Spring

数据访问层注解(@Component 派生)

表示该类负责数据持久化,并自动转换数据库异常

DAO 层、数据库操作类

@Repository public class UserDao {}

@Controller

Spring

控制层注解(@Component 派生)

接收 HTTP 请求并返回页面视图

MVC 控制器,返回 JSP/HTML 页面

@Controller public class PageController {}

@RestController

Spring

REST 控制层注解(= @Controller + @ResponseBody)

提供 REST API,自动将返回值转为 JSON

前后端分离、移动端接口

@RestController public class ApiController {}

@Configuration

Spring

配置类注解

定义 Bean 配置,替代 XML 配置文件

创建和注册 Bean

@Configuration public class AppConfig {}

@Bean

Spring

定义 Bean 的方法级注解

注册一个对象为 Spring Bean

配合 @Configuration 使用

@Bean public UserService userService(){}

@PostConstruct

Spring

Bean 初始化后执行方法

用于执行初始化逻辑

初始化缓存、加载配置

@PostConstruct public void init(){}

@Autowired

Spring

自动注入 Bean

自动装配依赖对象

注入 Service、Dao 等

@Autowired private UserService userService;

@Qualifier

Spring

配合 @Autowired 精确注入

指定具体 Bean 名称

存在多个同类型 Bean 时

@Qualifier(\"beanName\")

@Value

Spring

注入配置值

注入 application.properties 中的值

加载配置项

@Value(\"${server.port}\")

@RequestMapping

Spring MVC

映射请求路径

定义控制器方法的 URL 路径

Web 请求处理

@RequestMapping(\"/users\")

@GetMapping / @PostMapping

Spring MVC

映射 GET/POST 请求

快捷定义请求方法

REST API 开发

@GetMapping(\"/list\")

@PathVariable

Spring MVC

路径参数绑定

获取 URL 中的变量

REST 接口路径参数

@GetMapping(\"/{id}\")

@RequestBody

Spring MVC

请求体参数绑定

接收 JSON 请求体

前后端分离 JSON 接口

@PostMapping(\"/\")


Spring Boot 常用注解(与 Spring 区别)

注解

所属框架

定义

主要作用

使用场景

示例代码

@SpringBootApplication

Spring Boot

Spring Boot 应用入口注解(= @Configuration + @EnableAutoConfiguration + @ComponentScan)

启动类标识,开启自动配置与包扫描

Spring Boot 主启动类

@SpringBootApplication public class App {}

@EnableAutoConfiguration

Spring Boot

自动配置注解

自动装配所需 Bean 和配置

启用自动配置功能

(已包含在 @SpringBootApplication 中)

@ComponentScan

Spring Boot

包扫描注解

自动扫描指定包下的组件

控制扫描范围

(已包含在 @SpringBootApplication 中)

@EnableScheduling

Spring Boot

启用定时任务

开启 @Scheduled 定时任务功能

定时任务调度

@EnableScheduling

@Scheduled

Spring Boot

定时任务方法注解

声明一个定时任务方法

定时执行任务

@Scheduled(fixedRate=5000)

@EnableAsync

Spring Boot

启用异步任务

支持 @Async 异步方法

异步处理

@EnableAsync

@Async

Spring Boot

异步方法注解

声明异步执行的方法

多线程任务执行

@Async public void doTask()

@ConfigurationProperties

Spring Boot

批量注入配置文件属性

将配置文件内容注入对象

配置类绑定

@ConfigurationProperties(prefix=\"app\")


总结:

  • Spring 注解 主要负责 Bean 管理、依赖注入、MVC 请求处理、配置管理 等传统功能。
  • Spring Boot 注解 是对 Spring 的增强,重点在于 自动配置、简化启动、快速开发,减少繁琐的 XML 和配置代码。
  • @SpringBootApplication 是最核心的入口注解,可以理解为“Spring 项目的启动开关”,一行代码完成三件事:自动配置、组件扫描和配置类加载。

记忆技巧:

  • 写业务逻辑用 @Service
  • 写数据库操作用 @Repository
  • 写网页控制器用 @Controller
  • 写 JSON 接口用 @RestController
  • 写配置用 @Configuration + @Bean
  • 启动类一定有 @SpringBootApplication

Spring中的注解可以在SpringBoot中使用

Spring 中的注解几乎都可以在 Spring Boot 中使用,因为 Spring Boot 本质上就是对 Spring 框架的一层封装和自动化配置。Spring Boot 是建立在 Spring 之上的,它并不是另一个独立框架,而是 简化 Spring 使用的一套工具集和约定


详细解释如下:

分类

说明

Spring 注解

@Component@Service@Repository@Controller@Autowired@Configuration 等,这些是 Spring 核心容器和 IOC/DI 的注解,Spring Boot 也完全支持,并且是其核心基础。

Spring Boot 特有注解

@SpringBootApplication@EnableAutoConfiguration@ConfigurationProperties@RestControllerAdvice 等,这些是在原有 Spring 注解基础上进行的增强或组合,简化配置和开发流程


例子:Spring 的注解在 Spring Boot 中使用

// 这是标准的 Spring 注解,用于标记 Bean
@Component
public class MyBean {
    @PostConstruct
    public void init() {
        System.out.println("Bean 初始化完成");
    }
}

在 Spring Boot 中,这段代码 完全不用修改,可以直接运行,因为 Spring Boot 内部依然使用 Spring 的 IOC 容器和注解解析机制。


总结一句话:

Spring Boot ≈ Spring + 自动配置 + 嵌入式服务器 + 快速启动支持
因此,Spring 的注解不仅“可以”在 Spring Boot 中使用,而且是 Spring Boot 能够工作起来的根基


Spring 和 Spring MVC 的关系(通俗理解)

一句话总结:

Spring 是一个大框架(基础设施框架),而 Spring MVC 是 Spring 框架中专门用于处理 Web 层(MVC 模式)的一个子模块

换个更形象的比喻:

  • Spring 就像是一座大城市,提供了各种基础设施(依赖注入、AOP、事务、数据访问等)。
  • Spring MVC 就像这座城市里专门负责“交通调度”的一套系统,用来处理 Web 请求、响应、页面跳转等“前端交互”工作。

✅ 所以:
Spring MVC 是 Spring 框架的一部分,是它的一个子项目,要使用 Spring MVC 必须先有 Spring。


二、两者的功能定位对比

对比项

Spring

Spring MVC

定位

基础核心框架

Web 层框架(MVC 模型)

主要功能

IoC(控制反转)、AOP(面向切面)、事务管理、Bean 管理

请求分发、参数绑定、视图解析、REST 接口开发

是否独立运行

✅ 可以单独使用(比如纯后端服务)

❌ 不行,必须依赖 Spring

核心组件

ApplicationContext

BeanFactory

@Component

@Autowired

DispatcherServlet

@Controller

@RequestMapping

使用场景

所有 Java 应用的基础设施

Web 项目开发(接口、页面)

与 Spring Boot 的关系

Spring Boot 内部依赖 Spring

Spring Boot Web 模块内部整合了 Spring MVC


三、工作原理对比(整体架构)

Spring MVC 的运行完全依赖于 Spring 容器:

Spring(IOC容器 + AOP + Bean管理)
        │
        └─── Spring MVC(Web 层处理)
                ├─ DispatcherServlet(前端控制器)
                ├─ Controller(控制层)
                ├─ Model(模型层)
                └─ View(视图层)
  • Spring 负责管理所有 Bean、注入依赖、事务控制等。
  • Spring MVC 借助 Spring 的容器来创建 Controller 等组件,处理 HTTP 请求和响应。

四、代码层面示例

使用 Spring + Spring MVC 的典型控制器代码:

@Controller // Spring MVC 提供的控制层注解
public class HelloController {
    @RequestMapping("/hello")
    @ResponseBody
    public String sayHello() {
        return "Hello, Spring MVC!";
    }
}
  • @Controller@RequestMapping 等都是 Spring MVC 提供的注解
  • 这个 Controller Bean 本身依然是由 Spring 的 IOC 容器管理的

总结一句话(适合论文写):

Spring 是整个框架的基础核心,负责 IoC、AOP、事务等基础设施;Spring MVC 是 Spring 框架的一个子模块,专注于 Web 层的请求分发和 MVC 模式实现。Spring MVC 必须依赖于 Spring,而 Spring 则可以独立使用。


✅ 最终结论:

  • Spring 包含了 Spring MVC(Spring MVC 是 Spring 的子项目)。
  • Spring MVC 无法离开 Spring 单独存在,而 Spring 可以单独使用。

posted on 2025-10-25 08:10  slgkaifa  阅读(4)  评论(0)    收藏  举报

导航