AI写论文宝藏合集!4款AI论文生成工具,为你的论文创作添动力!

核心内容摘要

Nodejs+vue职业技术课程在线培训考试系统App小程序
Qwen3-0.6B-FP8效果展示:看小模型如何“先思考后回答”

ollama部署embeddinggemma-300m:面向开发者的小型化向量服务方案

Spring 中的 DIDependency Injection依赖注入是 Spring 框架的核心特性之一也是控制反转IoCInversion of Control原则的具体实现。

什么是 DI依赖注入是一种设计模式它将对象的依赖关系从对象内部移到外部容器Spring 容器来管理。

简单来说就是由容器负责创建对象并注入它所依赖的其他对象而不是由对象自己创建或查找依赖。

DI 的核心概念

依赖关系// 没有 DI 的情况publicclassUserService{privateUserDaouserDao;publicUserService(){// 对象自己创建依赖耦合度高this.userDaonewUserDao();}}// 使用 DI 的情况publicclassUserService{privateUserDaouserDao;// 通过构造函数注入依赖publicUserService(UserDaouserDao){this.userDaouserDao;}}

控制反转传统方式对象自己控制依赖的创建和管理DI 方式控制权反转给 Spring 容器由容器负责注入依赖DI 的三种注入方式

构造函数注入推荐ComponentpublicclassUserService{privatefinalUserDaouserDao;AutowiredpublicUserService(UserDaouserDao){this.userDaouserDao;}}

Setter 方法注入ComponentpublicclassUserService{privateUserDaouserDao;AutowiredpublicvoidsetUserDao(UserDaouserDao){this.userDaouserDao;}}

字段注入不推荐ComponentpublicclassUserService{AutowiredprivateUserDaouserDao;}DI 的优势降低耦合度对象之间通过接口交互不直接依赖具体实现提高可测试性可以轻松注入 Mock 对象进行单元测试便于维护依赖关系集中管理修改配置即可改变实现促进代码复用组件可以灵活组合使用符合单一职责原则对象专注于自己的业务逻辑Spring 中 DI 的实现Spring 通过以下注解实现 DIComponent标记类为 Spring 管理的 BeanAutowired自动装配依赖Service、Repository、Controller特定场景的组件注解Qualifier指定注入的 Bean 名称Value注入配置值实际示例// 定义接口publicinterfaceMessageService{StringsendMessage(Stringmessage);}// 实现类Service(emailService)publicclassEmailServiceimplementsMessageService{publicStringsendMessage(Stringmessage){returnEmail: message;}}Service(smsService)publicclassSmsServiceimplementsMessageService{publicStringsendMessage(Stringmessage){returnSMS: message;}}// 使用依赖注入ServicepublicclassNotificationService{privatefinalMessageServicemessageService;AutowiredpublicNotificationService(Qualifier(emailService)MessageServicemessageService){this.messageServicemessageService;}publicvoidsendNotification(Stringmessage){System.out.println(messageService.sendMessage(message));}}

总结DI 是 Spring 框架的基石它通过将对象的创建和依赖管理交给容器实现了松耦合、易测试、易维护的代码结构。

在现代 Java 开发中DI 已经成为主流的设计模式不仅限于 Spring在其他框架中也有广泛应用。

喵小吉51独家足球宝贝-喵小吉51独家足球宝贝应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123