Spring反转控制(IOC)和依赖注入(DI)

控制反转(Inversion of Control ,Ioc) 

      我认为所谓反转控制(IOC),就是在编程过程中开发人员常说的“实现必须依赖抽象,而不是抽象以来实现”,这就是从变现形式上对反转控制的一种解释。从工作模式上说,无需在代码中创建被调用者,而是交给外部容器去进行初始化,原来初始化被调用者的过程掌握在自己手中,而现在却掌握在外部容器里。

依赖注入(Dependency Injection)

      所谓依赖注入的过程就是初始化的过程,这是spring的容器功能,在实现类中不需要对被调用者初始化的实现,我在开发中常用的方法有setter注入(setter injection)、构造注入(constructor injection),此外还有接口注入(interface injection)。

1  、 setter注入(setter injection)

            setter注入就是在接受注入的类中添加被调用者的setter方法。然后在配置文件中通过添加setter方法实现注入:

.....

public class UserService{

    private userDao;

   .......

   public void setUserDao( UserDao userDao){

           this.userDao=userDao;

     }

}

通过Spring.xml的property标签来获取setter方法并把userDao注入给他:

<bean  id = "us" class="com.hp.service.UserService">

<property name="userDao" ref="ud">

<bean>


2、构造注入(constructor injection)

   构造注入就是在接收注入的类中定义一个构造方法,把被调用对象作为参数传入的一种方式:

.....

public class UserService{

    private userDao;

    public UserService(UserDao userDao){

         super();

         this.userDao=userDao;

   }

}


通过Spring.xml的constructor-arg标签来把userDao注入给他:

<bean  id = "us" class="com.hp.service.UserService">

<constructor-arg><ref bean="ud"/> </constructor-arg>

<bean>

3、接口注入(interface injection)

   接口注入指的就是在接口中定义要注入的信息,并通过接口完成注入,开发中较少用到。


这样通过ioc,可以利用setter 、constructor来实现自己的对象与对象之间的依赖关系实现DI,减少了程序的复写,降低组件之间的耦合度,实现软件各层之间的解耦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值