IoC/DI,控制反转和依赖注入

本文介绍了控制反转(IoC)的概念及其两种类型:依赖注入(DI)与依赖查找(DL)。重点讲解了依赖注入的原理及其实现方式,并通过代码示例展示了如何使用Spring框架进行依赖注入。
控制反转(IoC:Inversion of Control):
应用本身不负责依赖对象的创建与维护,而是由外部容器负责(IOC容器)。就是说控制权由应用转移到外部容器。控制权的转移就是所谓的反转。 控制反转一般分为两种类型, 依赖注入(Dependency Injection,简称DI)(流行)和依赖查找(Dependency Lookup)(不流行)。

依赖注入(DI:Dependency Injection):
在运行期,由外部容器动态地将对象注入到组件中。如下(注入personDao):
[java]  view plain copy
  1. public class PersonServiceBean{  
  2.     //PersonDao是一个接口,使用XML配置或注解可以注入一个实现类的实例  
  3.     @Autowired  
  4.     public PersonDao personDao;   
  5. }  

如果不采用依赖注入,则必须这样:
[java]  view plain copy
  1. public PersonDao personDao = new PersonDaoBean();   
这样的话Service和Dao是紧密耦合的。使用Spring可以把他们解耦,而且可以注入任何实现PersonDao的类,而不仅限于PersonDaoBean,要更改注入的实现类可以方便的通过XML配置文件来实现。

依赖注入有三种方式:
  • 接口注入(Interface Injection)
  • 设值注入(Setter Injection): IoC 容器使用属性的 setting 方法来注入被依赖的实例
  • 构造注入(Constructor Injection):利用构造器来设置依赖关系

Spring IoC/DI的过程:
  1. 遍历所有被注解的类和配置文件,为被注解或配置的类创建实例bean
  2. 再次遍历这些被注解的类和配置文件,如果发现某个bean里面的某个成员被注解或配置为需要注入,则为其注入相应的bean
  3. 默认地,这些bean都是单例的

依赖查找:
例子:
[java]  view plain copy
  1. public class MyBusniessObject{  
  2.   private DataSource ds;  
  3.   private MyCollaborator myCollaborator;  
  4.    
  5.   public MyBusnissObject(){  
  6. Context ctx = null;  
  7. try{  
  8.     ctx = new InitialContext();  
  9.     ds = (DataSource) ctx.lookup(“java:comp/env/dataSourceName”);  
  10.     myCollaborator = (MyCollaborator) ctx.lookup(“java:comp/env/myCollaboratorName”);  
  11.     }……  


内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值