zoukankan      html  css  js  c++  java
  • IOC与DI简介

    IOC:控制反转(Inverse Of Control)

    在没用spring框架之前我们是这样写程序的:

    private UserDao userDao = new UserDaoImpl();

    也就是说UserServiceImpl类中有哪个具体类属性由他自己决定,此时的编程完完全全是控制在我们写程序人的手里,我们自己new userDao,也自己决定用哪个userDao的实现。此时我们是依赖于具体的实现类。

    在使用了spring框架之后:

    private UserDao userDao; 

    此时只指定了接口,没有具体的实现类,控制权限交给了spring来管理。由spring来初始化userDao

    控制反转也就是说spring控制了原来的具体实现为抽象的概念,原来是直接针对具体的实现来编写代码,使用userDao的时候,直接使用其实现。

    现在使用了spring之后,这个userDao交由spring来控制了,我们要做的就是做具体的实现。这样达到了面对接口编程。

    控制反转概念很模糊,也有很多种版本解释,但是没必要死扣具体的理论。理解是什么意思即可。


    DI:依赖注入(Dependency Injection)

    1
    2
    3
    <bean id="userService" class="com.fz.service.UserService">
       <property name="userDao" ref="userDao"></property>
    </bean>

    在这个userService中有个属性是userDao接口,假如我们调用userSercie的userAdd方法的时候,其实也就是在userService的实现类里面调用userDao的userAdd方法。这个userAdd方法的具体实现类依赖于spring初始化的userDao这个对象。

    所以,可以理解为这个userService对象依赖于spring容器注入的userDao对象。








  • 相关阅读:
    C#中的委托,匿名方法和Lambda表达式
    Java 8 Lambda表达式探险
    Lambda表达式有何用处?如何使用?
    有参数的程序,可以被调用
    怎样用VB编写.DLL动态链接库文件
    Oracle 存储过程包
    EB(存储单位)
    排序之快速排序(上)
    排序之冒泡排序
    排序之堆排序
  • 原文地址:https://www.cnblogs.com/meet/p/4748377.html
Copyright © 2011-2022 走看看