指尖流淌的时光旋律:沉醉“久久一曲二曲三曲四曲五曲六曲”的曼妙世界

核心内容摘要

91浏览器极速上网新体验:穿越数字洪流,畅享瞬息世界
寻觅一生挚爱,就来爱情岛——开启浪漫旅程的秘密花园

肖雅婷:高清影像中的绝代风华,定格不止一次的心动瞬间

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在其他框架中也有广泛应用。

B站直播软件-B站直播软件应用

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

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