news 2026/4/10 22:29:37

Spring IOC与DI核心注解速查表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring IOC与DI核心注解速查表

一、IOC创建对象的4个核心注解

  1. @Controller- 用于标注控制器层组件(Controller层)
  2. @Service- 用于标注业务逻辑层组件(Service层)
  3. @Repository- 用于标注数据访问层组件(DAO层)
  4. @Component- 用于标注非三层架构的其他地方(通用组件)

原理:这些注解本质都是@Component的衍生注解,用于声明Bean并交由Spring容器管理


二、@Scope注解 - 控制对象作用域

@Scope("singleton")// 单例模式(默认)@Scope("prototype")// 多例模式

作用:控制Bean是单例还是多例,解决对象线程安全问题


三、XML配置 - 注解扫描生效

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!-- 扫描指定包下的注解 --><context:component-scanbase-package="com.luo"/></beans>

关键点component-scan标签开启注解驱动,本质是BeanFactoryPostProcessor在操作


四、DI依赖注入注解

注解注入类型默认规则使用场景
@Value基本类型直接赋值字符串、数字等基本类型注入
@Autowired引用类型按类型注入(byType)同一类型Bean唯一时使用
@Resource引用类型按名字注入(byName)需要明确指定Bean名称时
@Qualifier配合@Autowired按名字注入同一接口多个实现类时精确定位

优势:相比XML配置,注解方式无需编写set方法,开发更高效


五、完整示例代码

@Service("userService")// 指定id为userService,默认是首字母小写的类名@Scope("singleton")publicclassUserServiceImplimplementsUserService{// 基本类型注入@Value("19")privateintage;// 引用类型自动注入(默认按类型)@AutowiredprivateUserDaouserDao;// 如果存在多个UserDao实现类,可配合@Qualifier使用// @Autowired// @Qualifier("userDaoImpl")// private UserDao userDao;@OverridepublicvoidfindUserById(){userDao.findUserById();System.out.println("UserService!!!!");}}

六、快速记忆口诀

IOC四兄弟:Controller、Service、Repository、Component
Scope控单例:singleton默认,prototype多例
DI四剑客:Value基本型,Autowired类型,Resource名字,Qualifier配合
XML扫注解:component-scan包路径
修改BeanID:@Component(“自定义名称”)


七、原理补充(理解性记忆)

所有注解生效的前提是Spring容器启动时通过<context:component-scan>扫描包路径,将带有注解的类注册为BeanDefinition,再由BeanFactory实例化并管理其生命周期

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/1 3:20:01

【C++ 入门】类和对象(上)

大家好&#xff01;今天咱们正式踏入 C 的核心 ——类和对象的世界。如果说 C 语言是 “面向过程” 的工具箱&#xff0c;那 C 的 “类和对象” 就是把工具打包成 “智能设备”&#xff0c;让代码更贴近现实逻辑。这篇文章先从最基础的 3 个问题入手&#xff1a;对象占多大内存…

作者头像 李华
网站建设 2026/3/27 18:12:24

50、Windows Forms开发:多窗体显示与常用控件介绍

Windows Forms开发:多窗体显示与常用控件介绍 在Windows Forms应用程序开发中,我们常常需要创建额外的窗口或窗体来满足不同的需求,同时也会用到各种控件来展示和处理数据。本文将介绍如何显示其他窗体,以及一些常见的数据显示控件。 显示其他窗体 在Windows Forms应用中…

作者头像 李华
网站建设 2026/4/7 22:55:35

【C++ 入门】类和对象(中)

大家好&#xff01;上一篇我们学会了对象的 “出生”&#xff08;构造函数&#xff09;和 “死亡”&#xff08;析构函数&#xff09;&#xff0c;今天咱们聚焦对象的 “日常互动”—— 怎么用已有对象 “克隆” 新对象&#xff1f;怎么让自定义类型像int一样用、做运算&#x…

作者头像 李华
网站建设 2026/3/26 23:39:56

53、无处不在的数据集——DataSet使用全解析

无处不在的数据集——DataSet使用全解析 1. 认识DataSet 在Windows Forms数据绑定中,最常见的数据类型就是DataSet,或者是派生的类型化数据集类。在.NET 2.0中,将数据绑定到自定义对象和集合也非常容易,但DataSet是专门为.NET中的数据绑定而设计的。 DataSet本质上是一个…

作者头像 李华
网站建设 2026/4/6 4:23:04

20、Bison解析器相关技术及SQL语法规则详解

Bison解析器相关技术及SQL语法规则详解 1. 扫描器与错误处理 在扫描器的工作机制中,若未从扫描器返回,前一步骤仅在 yylex 返回并再次被调用时才会被触发。对于最后一条通用规则,它会打印错误信息。在原始的C版本扫描器中,会调用 yyerror ,但由于当前扫描器并非C++解…

作者头像 李华