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

Posted fight139

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IoC(控制反转)和DI(依赖注入)相关的知识,希望对你有一定的参考价值。

一、IOC

1.目标类

  • 提供UserService接口和实现类
  • 获得UserService实现类的实例

  之前开发中,直接new一个对象即可,使用spring之后,将由spring创建  --》IoC控制反转

以后需要实例对象时,从spring工厂(容器)获得,需要将实现类的全限定名称配置到xml中

 

2.配置文件

 位置:任意,开发一般放在classpath下(src)

 名称:任意,一般使用applicationContext.xml

 内容:添加schema约束

 约束文件位置:spring-framework-3.2.0.RELEASE\\docs\\spring-framework-reference\\html\\xsd-config.html

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
                              http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- bean definitions here 
    配置所需要创建的实例对象,放入spring容器中
    -->
    <bean class="service.UserServiceImp" id="userService"></bean>
</beans>

 

 3.测试

@Test
public void test01(){
    //获得容器
    String xmlPath = "service/beans.xml";
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
    //从容器中取实例对象
    UserService userService = (UserService) applicationContext.getBean("userService");
    System.out.println(userService);
    userService.addUser();
}

 二、DI

 1.目标类

2.配置文件

<bean id="userService" class="DI.UserServiceImp">
    <!-- 属性注入,
        name:属性名,通过set方法获得
        ref:另一个bean的id的引用
     -->
    <property name="userDao" ref="userDao"></property>
</bean>
<bean id="userDao" class="DI.UserDaoImp"></bean>

 

 3.测试

@Test
public void test01(){
    //获得容器
    String xmlPath = "DI/beans.xml";
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
    //从容器中取实例对象
    UserService userService = (UserService) applicationContext.getBean("userService");
    System.out.println(userService);
    userService.addUser();
}

 

以上是关于IoC(控制反转)和DI(依赖注入)的主要内容,如果未能解决你的问题,请参考以下文章

Spring_IOC控制反转和DI依赖注入

spring IOC(控制反转)及DI(依赖注入)

PHP 依赖注入(DI) 和 控制反转(IoC)

spring核心思想:IOC(控制反转)和DI(依赖注入)

控制反转(IOC)和依赖注入(DI)的区别

如何理解 PHP的依赖注入(DI) 和 控制反转(IoC)