当前位置: 首页 > news >正文

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 {@PostConstructpublic 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")@ResponseBodypublic 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 可以单独使用。
http://www.dtcms.com/a/414423.html

相关文章:

  • 郫县建设局网站wordpress如何运行
  • LeetCode 114.二叉树展开为链表
  • 机器人中的电机与扭矩入门
  • 站长平台如何推广自己的网站怎么做网页版网站
  • 深入理解BFC:解决margin折叠和浮动高度塌陷的利器
  • Spec Kit - 规范驱动开发工具包
  • 具有价值的常州做网站免费进销存软件哪个简单好用
  • creo二次开发seo职位信息
  • Windows 10 环境下 Redis 编译与运行指南
  • 【编号206】房地产统计年鉴2002~2023
  • 某大型广告公司实习感受
  • 【Day 68】Zabbix-自动监控-Web检测-分布式监控
  • 企业网站建设公司公司网站开发客户挖掘
  • 天拓四方集团IOT平台:赋能电气设备制造商数智化转型新引擎
  • 【STM32项目开源】基于STM32的智能鱼缸养殖系统
  • 【小迪安全v2023】学习笔记集合 --- 持续更新
  • Django - DRF
  • Python全方位处理XML指南:解析、修改与重写实战
  • LabVIEW实现B样条曲线拟合
  • 门户网站系统建设招标文件中国建设教育协会网站培训中心
  • 常熟网站网站建设在线教育自助网站建设平台
  • 【Linux】深入探索多线程编程:从互斥锁到高性能线程池实战
  • 广州手机网站建设报价沧州市政务服务大厅
  • .net网站开发程序员深圳专业网站建设公司
  • DedeCMS命令执行复现研究 | CVE-2025-6335
  • BJDCTF2020
  • LeetCode:239. 滑动窗口最大值
  • 文件上传漏洞(二)iis6.0 CGI漏洞
  • PHP的json_encode()函数了解
  • LeetCode:76.数据流的中位数