0

0

Spring依赖注入:注入接口和实现类,有何区别?

霞舞

霞舞

发布时间:2025-03-04 12:02:09

|

470人浏览过

|

来源于php中文网

原创

spring依赖注入:注入接口和实现类,有何区别?

Spring框架依赖注入:接口和实现类的最佳实践

本文分析Spring依赖注入中注入接口与注入实现类的差异,并结合实例阐述其优劣。

文中案例展示了两种Spring依赖注入方式:直接注入实现类和注入接口类型。前者输出结果符合预期,而后者返回Object类型而非预期的IFactoryMethodService类型。这引出了两个关键问题:为何注入接口时返回Object?接口注入和实现类注入有何区别

第一个问题的关键在于接口的泛型定义。Spring的类型检查仅基于接口定义,不深入实现类细节。若接口使用泛型,则泛型参数类型默认Object。因此,即使实现类返回IFactoryMethodService对象,在接口层面仍为Object类型。

第二个问题,从实用性角度来看,区别在于灵活性。对于多实现类的接口,注入接口更灵活。

迷你天猫商城
迷你天猫商城

迷你天猫商城是一个基于Spring Boot的综合性B2C电商平台,需求设计主要参考天猫商城的购物流程:用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确认收货,评价等一系列操作。 作为迷你天猫商城的核心组成部分之一,天猫数据管理后台包含商品管理,订单管理,类别管理,用户管理和交易额统计等模块,实现了对整个商城的一站式管理和维护。所有页面均兼容IE10及以上现代浏览器。部署方式1、项目

下载

注入接口且未指定实现类时,Spring返回所有实现类的列表(List)。开发者需遍历列表,使用instanceof等方法选择合适的实现类。这提升了系统扩展性,例如,添加新实现类无需修改原有代码。

而注入实现类则直接依赖于特定实现类,缺乏灵活性。若需支持新实现,则需修改依赖注入配置和业务代码。

例如,若需向飞书、企业微信钉钉等多个渠道发送告警,可定义一个告警接口,分别实现各个渠道的告警逻辑。业务代码注入该接口的List,循环调用每个实现类的告警方法。添加新告警渠道只需新增实现类,无需修改业务代码。反之,若注入具体实现类,则需修改代码以适配新渠道。

综上,注入接口更符合面向接口编程原则,具有更好的扩展性和灵活性,尤其在需要支持多种实现类时。注入实现类则相对简单直接,但灵活性较差。选择何种方式取决于具体应用场景和需求。

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

102

2025.08.06

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1017

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

62

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

393

2025.12.29

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

6

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

13

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

30

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

18

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

10

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 11.7万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.1万人学习

PHP课程
PHP课程

共137课时 | 8.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号