资讯中心 Info
当前位置:爱尚教育 > 资讯中心 >
SpringIOC 和 DI
发布日期:2020-07-20 阅读次数:

SpringIOC 和 DI

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="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

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

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

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

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

                           http://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测试

结果如下:

 

课程体系
通知公告
  • 爱尚教育_Javaw优德88 com|Pythonw优德88 com|软件测试w优德88 com|WEB前端w优德88 com|数据库w优德88 com|算法与数据结构w优德88 com|数据分析w优德88 com|大数据w优德88 com|新媒体运营w优德88 com
    马老师
    张老师
  • 024-28667511