您的位置:首页>>资讯中心>>学习园地

SpringIOC 和 DI

image.png

SpringIOC是控制反转,DI是依赖注入,那么什么是控制反转和依赖注入呢,

第一我们要知道,控制反转中,谁控制谁,又反转给谁?

第二我们要知道,依赖注入中,谁依赖谁,谁又注入谁?

当然对于谁控制谁,那肯定是SpringIOC控制对象,控制的是对象的实例创建,我们在A中使用B,就必须把B创建出来,也就是我们要主动的获得B的实例,这种行为被称作正向的,那么什么是反向呢,就是A不再主动获取B,而是等待,等待SpringIOC容器或者DI帮助我们产生B的实例,然后反向注入到A类中。

         对于依赖注入,我们要知道如果在C类中需要用到D的对象,那么C对于D来说就是C依赖于D,那么就需要在C中注入D,我们可以通过几种方式进行注入

1.set方法注入

2.构造方法注入

3.注解方式注入

4.接口方式注入

当然最简单的还是springmvc中通过扫描注解进行注入

 

这里我给大家操作一下通过set方法进行依赖注入

@Test

public void SpringIoc (){

//      产生Spring容器

         String path = "applicationcontext.xml";

         ApplicationContext ac = new ClassPathXmlApplicationContext(path);

//              通过Spring容器拿到产生的对象

         UserService userService = (UserService)ac.getBean("userService");

//              使用对象调用方法

         userService.addtest2();

}

 

public class UserService {

         private UserDao userDao;

         public void setUserDao(UserDao userDao) {

                  this.userDao = userDao;

         }

         public void addtest2(){

                  System.out.println("调用Service成功");      

                  userDao.add();

         }

 

public class UserDao {

         public void add(){

                  System.out.println("调用userDao添加方法成功");   

         }

}

 

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="https://www.springframework.org/schema/beans" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"

       xmlns:context="https://www.springframework.org/schema/context" 

       xsi:schemaLocation="https://www.springframework.org/schema/beans

                                               https://www.springframework.org/schema/beans/spring-beans.xsd

                           https://www.springframework.org/schema/context

                           https://www.springframework.org/schema/context/spring-context.xsd">

<!--   产生userService的实例 -->

<bean id="userService" class="test.myservice.UserService">

         <!--          在userService中注入userDao -->

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

</bean>

<!-- 产生userDao的实例 -->

<bean id="userDao" class="test.mydao.UserDao"></bean>

 

</beans>

这样配置成功后,我们通过JUnit测试

结果如下:

image.png

上一篇: Spark Streaming

下一篇: SSM核心框架概述