Spring的IOC(反向控制)

本文详细介绍了IoC(控制反转)的概念及其三种依赖注入方式:接口注入、setter方法注入和构造方法注入,并通过示例代码展示了每种方式的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IoC直观的讲,就是容器控制程序之间关系,而非传统实现中,由程序代码直接操控。这就是所谓的“控制反转”的概念所在。控制权由应用代码中转到了外部容器,,控制权的转移就是所谓反转。

Ioc还有另外一个名字 -- “依赖注入”(Dependecy Injection),所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,形象的说,即有容器动态的将某种依赖关系注入到组件之中。

Ioc的三种依赖注入类型如下:

1、通过接口注入,这种方式要求我们的类必须实现容器给定的一个接口,然后容器会利用这个接口给我们这个类注入它的依赖类。
public class Girl implements Servicable {

Kissable kissable;
public void service(ServiceManager mgr) {
kissable = (Kissable)mgr.lookup("kissable");
}

public void kissYourKissable() {
kissable.kiss();
}
}

配置文件:
<container>
<component name="kissable" class="Boy">
<configuration>......</configuration>
</component>
<component name="girl" class="Girl"/>
</container>
2、通过setter方法注入,这种方式是Spring推荐的方式。
public class Gril {
private Kissable kissable;
public void setKissable(Kissable kissable) {
this.kissable = kissable;
}

public void kissYourKissable() {
kissable.kiss();
}
}
配置
<beans>
<bean id = "boy" class = "Boy"/>
<bean id = "girl" class = "Gril">
<property name = "kissable">
<ref bean = "boy"/>
</property>
</bean>
</beans>
3、通过构造方法注入,这种方式Spring同样给予了实现,它和通过setter方法一样,都在类里无任何侵入性,但是不是没有侵入性,只是把侵入性转移了。
public class Gril {
private Kissable kissable;
public Gril(Kissable kissable) {
this.kissable = kissable;
}

public void kissYourKissable() {
kissable.kiss();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值