spring的依赖注入和反转控制,spring的依赖注入和控制反转是完全不同的两个概念

  spring的依赖注入和反转控制,spring的依赖注入和控制反转是完全不同的两个概念

  00-1010概念:用途比较1。使用前:2。使用后:了解控制反转(Ioc):IoC的应用方法。

  00-1010依赖注入(DI)和控制反转(IoC)的意思一样,但是从两个角度描述的是同一个概念。对于一个春季初学者来说,这两个标题很难理解。我们用简单的语言描述这两个概念。

  

目录

 

  00-1010当一个Java对象(调用者)需要调用另一个Java对象(被调用者,即依赖对象)时,在传统模式下,调用者通常使用 new callee 的代码方法来创建对象。这种方式会增加调用者和被调用者之间的耦合,不利于后期项目的升级和维护。

  

概念:

使用Spring framework后,对象的实例不再由调用者创建,而是由Spring framework的容器来创建,它将负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这样控制权就从应用程序代码转移到了Spring框架容器,控制权反转,这就是Spring框架的控制权反转。

 

  从Spring框架容器的角度来看,它负责将依赖对象赋给调用者的成员变量,相当于调用者注入其依赖实例,这就是Spring框架的依赖注入。

  00-1010控制反转,也称为依赖注入,是面向对象编程中的一种设计概念,用于降低程序代码之间的耦合性,常用于MVC设计模式中。先考虑什么是依赖。在依赖代码中,一般指通过局部变量、方法参数、返回值等建立的对其他对象的调用关系。比如在A类的方法中,B类的对象被实例化,调用它的方法来完成一个特定的功能,即A类依赖于B类。

  几乎所有的应用程序都是由两个或两个以上的类组成的,它们相互协作以实现完整的功能。类之间的依赖增加了程序开发的复杂性。开发一个类时,我们还应该考虑对正在使用该类的其他类的影响。例如,如果普通业务层调用数据访问层实现持久化操作,解决问题的步骤如下:

  (1)获取Spring开发包,为项目添加Spring框架支持。

  (2)声明业务层和数据访问层接口所需的方法。

  (3)编写数据访问层接口UserDao的实现类,完成具体的持久化操作。

  (4)在业务实现类中声明UserDao接口类型的属性,并添加适当的构造方法为属性赋值。

  (5)在Spring的配置文件中,将DAO对象以构造注入的形式赋给业务实例的UserDao类型属性。

  (6)在代码中获取Spring配置文件组装的业务类对象,实现程序功能。

  00-1010 IOC容器中配置属性的语法

  第一种方式:

  Book.java

  包cn . spring . IOC . demo . exercise;公共类图书{私有整数id;私有字符串bookName私人浮动价格;public Integer getId(){ return id;} public String get bookName(){ return bookName;} public Float getPrice(){ return price;} public void setId(Integer id){ this . id=id;} public void set bookName(String bookName){ this . bookName=bookName;} public void setPrice(浮动价格){ this.price=price} @ Override public String to String(){ return Book { id= id ,bookName= bookName ,price= price }}}容器配置:

  bean id= book1 class= cn . spring . IOC . demo . exercise . book

   <property name="id" value="1001"/> <property name="bookName" value="C++基础编程"/> <property name="price" value="28.2"/> </bean>第二种方式:

  Book_1.java

  

package cn.spring.ioc.demo.exercise; public class Book_1 { private Integer id; private String bookName; private Float price; public Book_1(Integer id,String bookName,Float price){ this.id = id; this.bookName = bookName; this.price = price; } public Integer getId() { return id; } public String getBookName() { return bookName; } public Float getPrice() { return price; } public void setId(Integer id) { this.id = id; } public void setBookName(String bookName) { this.bookName = bookName; } public void setPrice(Float price) { this.price = price; } @Override public String toString() { return "Book_1{" + "id=" + id + ", bookName=" + bookName +  + ", price=" + price + }; }}

容器配置:

 

  

 <bean id="book2" class="cn.spring.ioc.demo.exercise.Book_1"> <constructor-arg index="0" value="1002"/> <constructor-arg index="1" value="Java/> <constructor-arg index="2" value="33.3"/> </bean>

第三种方式:

 

  BookFactory.java

  

package cn.spring.ioc.demo.exercise; public class BookFactory { public Book getBookInstance(Book book){ return book; }}

容器配置:

 

  

 <bean id="book3" class="cn.spring.ioc.demo.exercise.Book"> <property name="id" value="1004"/> <property name="bookName" value="go"/> <property name="price" value="88.2"/> </bean> <bean id="factory" class="cn.spring.ioc.demo.exercise.BookFactory" /> <bean id="finstance" factory-bean="factory" factory-method="getBookInstance"> <constructor-arg index="0" ref="book3"/> </bean>

第四种方式:

 

  Book_1Factory.java

  

package cn.spring.ioc.demo.exercise; public class Book_1Factory { public static Book_1 getBookInstance(Integer id,String bookName,Float price){ return new Book_1(id, bookName, price); }}

容器配置:

 

  

 <bean id="bf" class="cn.spring.ioc.demo.exercise.Book_1Factory" factory-method="getBookInstance"> <constructor-arg index="0" value="1003"/> <constructor-arg index="1" value="python"/> <constructor-arg index="2" value="99.9"/> </bean>

到此这篇关于深入浅出讲解Spring框架中依赖注入与控制反转及应用的文章就介绍到这了,更多相关Spring框架 依赖注入内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • spring编程式事务处理,spring编程事务
  • spring编程式事务处理,spring编程事务,详解Spring学习之编程式事务管理
  • spring的核心功能模块有几个,列举一些重要的spring模块
  • spring的核心功能模块有几个,列举一些重要的spring模块,七个Spring核心模块详解
  • spring注解和springmvc的注解,SpringMVC常用注解
  • spring注解和springmvc的注解,SpringMVC常用注解,详解springmvc常用5种注解
  • spring实现ioc的四种方法,spring的ioc的三种实现方式
  • spring实现ioc的四种方法,spring的ioc的三种实现方式,简单实现Spring的IOC原理详解
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况,Spring事务失效问题分析及解决方案
  • spring5.0新特性,spring4新特性
  • spring5.0新特性,spring4新特性,spring5新特性全面介绍
  • spring ioc以及aop原理,springmvc aop原理
  • spring ioc以及aop原理,springmvc aop原理,深入浅析Spring 的aop实现原理
  • Spring cloud网关,spring cloud zuul作用
  • 留言与评论(共有 条评论)
       
    验证码: