IOC理论推导

本文介绍了IoC(控制反转)的概念,通过实例展示了如何使用setter注入降低系统耦合性。IoC的本质是通过描述(如XML或注解)让第三方来创建和管理对象。Spring框架通过IOC容器实现了依赖注入,提供了XML配置和注解两种方式。此外,还探讨了IoC创建对象的几种方式,包括无参构造、有参构造以及通过构造函数的参数名称来设置对象。

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

1.IOC的原型

在我们之前的业务中,用户的需求可能会影响我们原来的代码,我们需要根据用户的需求去修改源代码!如果程序代码量十分大,修改一次成本代价十分昂贵。

public class UserServiceImpl implements UserService {
    private UserDao userDao;
    //利用set进行动态实现值的注入!
    public void setUserDao(UserDao userDao){
        this.userDao = userDao;
    }
    public void getUser(){
        getUser();
    }
}

当我们使用一个Set接口实现时,就已经发生了革命性的变化

  • 之前程序是主动创建对象!控制权在程序员手上

  • 使用了set注入后,程序不再具有主动性,而是变成了被动接受的对象

这种思想,从本质上解决了问题,我们程序员不用再去管理对象的创建了。系统的耦合性大大降低。可以专注于业务的实现上。这就是ioc的原型。

2.IOC本质

控制反转(IOC),是一种设计思想,DI(依赖注入)是实现IOC的一种方法

在没有IOC的程序中,我们使用面向对象编程,对象的创建与对象间的依赖关系完全编码在程序中,对象的创建由程序自己控制

控制反转后将对象的创建转移给第三方

个人认为所谓控制反转就是:获得依赖对象的方式反转了

控制反转是一种通过描述(xml或者注解)并通过第三方去生产或获取特定对象的方式,在spring中实现控制反转的是IOC容器,其实现方法是依赖注入

控制:谁来控制独享的创建,传统应用程序是由程序本身控制创建的,使用spring后,对象是由spring创建的

反转:程序本身不创建对象而编程,而变成被动接收对象

依赖注入:就是利用set方法来进行注入

IOC容器:

 实现IOC的方式:

1.可以使用xml配置

采用xml配置Bean的时候,Bean的定义信息和现实是分离的,而采用注解的方式可以把二者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。

彻底不用在程序中去改动了,要实现不同的操作,只需要在xml文件中进行(由spring进行创建,对象属性由spring容器设置),所谓的IOC一句话概括就是:对象由spring进行创建,装配,管理

2.可以使用注解

3.新版本的spring可以零配置实现IOC

3.IOC创建对象的方式

1.使用无参构造创建对象(默认实现)

2.使用有参构造创建对象

  • 下标赋值

    <bean id="user" class="java.spring5.user">
        <constructor-arg index="0" value="zhangtaozhenniubi"/>
    </bean>
  • 通过类型创建(不建议使用)

    <bean id="user" class="java.spring5.user">
        <constructor-arg type="java.long.string" value="zhangtao"/>
    </bean>
  • 直接通过参数名来设置

    <bean id="user" class="java.spring5.user">
        <constructor-arg name="name" value="zhangtao"/>
    </bean>

总结:在配置文件加载的时候,容器中管理的对象就已经初始化了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值