Spring IoC核心注解速成指南
轻松拿捏 Spring IoC:核心注解速成指南
一、 背景引入:什么是 IoC 容器与 Bean?
在传统的 Java 开发中,如果我们需要用到一个对象,通常会自己动手去 new 一个。但这就像凡事都要亲自去采买一样,费时费力且难以管理。
Spring IoC(控制反转)容器,就像是为您服务的一位“超级管家”。您不再需要自己去创建和组装对象,而是将这些工作全部交由这位管家来统一打理。
当我们在类上打上特定的注解,这就相当于给这个类贴上了一个标签,告诉管家:“请把这个类实例化成一个对象(也就是声明为 Bean),并放进仓库(IoC 容器)里统一保管。” 当其他地方需要用到这个对象时,管家会自动把它送过去,这就是所谓的“依赖注入”。
二、 核心注解解析:如何给类贴标签?
为了让管家更好地分门别类地管理对象,Spring 提供了几个核心注解。我们要把某个对象交给 IoC 容器管理,只需在对应的类上加上如下注解之一:
1. 基础注解:@Component
- 作用:声明 Bean 的最基础注解。
- 使用场景:当一个类不好归类到经典的“Web 三层架构”中,或者它只是一个普通的工具类、第三方组件时,我们通常使用
@Component作为“兜底”选择。
2. 衍生注解:各司其职的“三剑客”
为了让代码结构更清晰,Spring 在 @Component 的基础上衍生出了三个具有明确语义的注解。它们在功能上与 @Component 完全一致,但通过它们,我们可以一眼看穿这个类在系统架构中扮演的角色:
@Controller(控制层)- 位置:标注在 Controller 层的类上。
- 职责:负责接客。它专门用来接收前端发送过来的 HTTP 请求,并将处理后的数据响应给前端。
@Service(业务层)- 位置:标注在 Service 层的类上。
- 职责:负责干活。它是系统的核心大脑,专门用来处理复杂的业务逻辑。
@Repository(数据访问层)- 位置:标注在 Dao(数据访问)层的类上。
- 职责:负责跑腿。它专门负责与数据库打交道,进行数据的增删改查。
三、 细节拓展:为什么 @Repository 渐渐失宠了?
关于 @Repository 有一个非常精准的备注:“由于与 mybatis 整合,用的少”。
原理解释:
在早期的开发中,我们需要自己编写 Dao 接口,并手动编写它的实现类,然后在实现类上加上 @Repository 让 Spring 管理。
但在现在的企业级开发中,绝大多数会使用 MyBatis 或 MyBatis-Plus 作为持久层框架。我们只需要定义一个 Mapper 接口,并加上 @Mapper 注解(或者在启动类上使用 @MapperScan),MyBatis 就会在底层自动通过动态代理生成实现类,并自动将其注册到 Spring 的 IoC 容器中。
因此,现在几乎不需要再去手动写实现类并打上 @Repository 注解了,它便渐渐退居幕后。
更多推荐



所有评论(0)