Spring之依赖反转(控制),依赖注入

通常在Spring中说的依赖注入,控制反转,依赖反转等名词时,总是不理解其中包含的意思,今天来梳理一下。

依赖反转:依赖对象的获得被反转了,是指调用者不再创建被调用者的实例,由spring框架实现(容器创建),又称控制反转。

依赖注入:容器创建好实例后再注入调用者称为依赖注入


下面一个小实例:

定义一个接口 

public interface Person {
               void sayHello(); 
        } 

第一个实现类:

public class Chinese implements Person {
             public void sayHello() {
                    System.out.println("您好 !");
             }
      }

第二个实现类: 

public class American implements Person {

     public void sayHello() {
                 System.out.println("How do you do .");
            }

}

这个类与传统设计有什么区别:该类调用Person子类的方法,传统设计在本类中创造实例,而在此类里并没有创造实例

public class User {
           Person p;                  
// Person p = new Person();传统方法
            public Person getP() {
                return p;
           }
            //使用setter注入
          public void setP(Person p) {
              this.p = p;
          } 
          

//调用person子类重写的sayHello方法,这里的p并没有实例化

    public void function(){
              p.sayHello();
            }

}

 

外部‘容器’,类似于spring中的IoC中的一小部分

public class Container{

    public static User getBean(){   

        Person p=new Chinese();

        User user = new User();

         //由容器‘注入’实例,依赖注入

        user.setP(p);

        return user;

    }

}

 

测试类:

public class Test{

    public static void main(String[] args){

           User user = Container.getBean();

           user.function();

    }

}

//后台输出‘您好’


总之,依赖反转和依赖出入就是把依赖对象的生成,获取都转交给外部容器,然后由容器返回给使用对象。

在Spring中,我们看到的就是, Java EE的服务都被抽象到IoC容器中,并通过AOP进行有效的封装,因为依赖注入的特性,这些复杂的依赖关系的管理被反转并被交给容器,使复杂的依赖关系管理从应用中解放出来了。各个模块的依赖关系通过简单的IoC配置文件进行描述,使这些外部化的信息集中并且明了,我们在使用其他组件服务时,只需要去配置文件中了解和配置这些依赖关系即可。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值