Spring DI依赖注入

Spring DI依赖注入

依赖注入(DI)和控制反转(IOC)分别是什么?二者有什么区别?

依赖注入(DI): 假如有A和B俩个不同的类,A依赖与B,A中有一个方法使用到了B,就将对象B注入到A中,依赖注入就是程序运行过程中,如果遇到一个对象需要另一个对象协助时,不用代码中创建调用者,通过依赖与外部的注入来完成。

控制反转(IOC): 控制反转时Spring的核心,所有的类都会在Spring的容器来登记,来告诉Spring你是个什么东西,需要什么东西,然后Spring会在系统运行到适当的时候,把你需要的东西主动交给你,同时也把你交给需要你的东西。所有的类的创建,销毁都是由Spring来控制。对于某个具体的对象而言,以前是它控制对象,现在是所有对象都被Spring控制,程序中的之间的关系,不用代码来控制,而是完全是由容器来控制。

依赖注入和控制反转的区别: 他们都降低了代码的耦合度,依赖注入要依赖与控制反转的容器,应用程序需要控制反转容器来提供外部需要的资源。依赖注入强调关系的注入是由容器运行时完成的,而控制反转强调关系是由容器控制。

DI和直接实例化一个对象有什么区别?

本质上都是创建对象,没有区别。在类一多区别就体现出来了。例如A依赖B, B依赖C, C依赖D。要创建A, 用new就废了,b,c,d先new一遍再new a。用IOC就快多了,A(B b),其他自动创建,是不是快多了?尤其是在很多类又用了很多包的时候。

还有一个生命周期管理。

创建应用组件之间协作的行为通常称为装配(wiring)

Spring装配机制

  • 在XML中进行显式配置。

  • 在Java中进行显式配置。

  • 隐式的bean发现机制和自动装配。

Spring自动装配

  • 组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean。

  • 自动装配(autowiring):Spring自动满足bean之间的依赖

@Component注解。这个简单的注解表明该类会作为组件类

作用域

  • 单例(Singleton):在整个应用中,只创建bean的一个实例。

  • 原型(Prototype):每次注入或者通过Spring应用上下文获取的 时候,都会创建一个新的bean实例。

  • 会话(Session):在Web应用中,为每个会话创建一个bean实例。

  • 请求(Rquest):在Web应用中,为每个请求创建一个bean实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值