首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【SpringBoot】IOC && DI && 五大注解

【SpringBoot】IOC && DI && 五大注解

原创
作者头像
lirendada
发布2026-06-03 14:27:33
发布2026-06-03 14:27:33
70
举报
文章被收录于专栏:JavaJava

Ⅰ. 什么是 IOCDI❓❓❓

IOC 全称是 Inversion of Control,中文叫 "控制反转"。

简单的说,就是把对象的创建和依赖关系的维护交给框架管理,而不是自己在代码中 new 出来

IOC 是一种设计思想而注解 DI 是实现 IOC 的方式之一

IOC 的好处如下所示:

优点

说明

解耦

组件之间不直接 new,依赖由框架注入

易测试

方便用 mock 对象进行单元测试

灵活替换

想换实现类,只改配置或注解,不改业务代码

更清晰的架构

各层职责分明,依赖关系可视化

此外,Spring 容器管理的对象,称为 Bean 对象。

@Component@AutowiredSpring 框架中非常核心的两个注解,是实现 IOC(控制反转)DI(依赖注入) 的关键工具。

  • @Component:一个类级注解,用于将普通的 Java 类声明为 Spring 管理的 Bean
  • @Autowired:一个非类级注解,用于自动注入依赖对象,而无需手动 new

如何从 Spring 容器中获取对象❓❓❓ 可以从 ApplicationContext 中的 getBean() 方法获取,如下所示: public static void main(String[] args) { // 在启动类中拿到ApplicationContext对象 ApplicationContext context = SpringApplication.run(Application.class, args); // 第一种传参方式 UserComponent bean1 = context.getBean(UserComponent.class); bean1.func(); // 第二种传参方式(需要强转) UserConfig bean2 = (UserConfig)context.getBean("userConfig"); bean2.func(); } 而 getBean() 方法,实际上是 ApplicationContext实现了 BeanFactory 接口得到的,并且在其基础上添加了对国际化支持、资源访问支持、以及事件传播等方面的支持! 此外,getBean() 对于 Bean 的名称约定如下所示:

  • 以小写字母开头,然后使用小驼峰的格式。如类名为:UserController,则 Bean 名为:userController
  • 特殊情况:当第一个和第二个字母为大写时,则保留原始的大小写。如类名为:UController,则 Bean 名为 UController

Ⅱ. 五大注解

注解

作用

常见使用位置

@Component

通用组件,标识该类为 Bean

工具类、业务组件

@Controller

控制层,接收前端请求

MVC 控制器类

@Service

业务逻辑层

Service 类

@Repository

数据持久层

DAO 类,MyBatis Mapper

@Configuration

配置类

用于代替 XML 配置

常见的目录结构规范如下所示:

代码语言:javascript
复制
src
└── main
    └── java
        └── com.example.project
            ├── controller    # 控制器层(@Controller / @RestController)
            ├── service       # 业务逻辑层(@Service)
            ├── dao/mapper    # 数据访问层(@Repository / @Mapper)
            ├── model/entity  # 实体类(POJO/DTO/DO/VO)
            └── config        # 配置类(@Configuration)

注意:五大注解均可以起别名!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Ⅰ. 什么是 IOC 和 DI❓❓❓
  • Ⅱ. 五大注解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档