请简述什么是spring的ioc和di,spring ioc和di的理解,它们之间的区别

  请简述什么是spring的ioc和di,spring ioc和di的理解,它们之间的区别

  如何解决写爬虫IP受阻的问题?立即使用。

  什么是Spring

  Spring是一个以IoC和AOP为核心的框架。

  IoC(控制反转)是Spring的基础。

  简单来说,IoC就是前程序员创建的对象调用新的构造方法,它就变成了Spring创建的对象。

  DI(依赖注入)和IoC的意思一样,只是这两个术语是从两个角度描述的同一个概念。

  简单来说,DI就是对象的属性,已经注入了相关的值,可以直接使用。

  IoC-控制反转

  每个对象类被封装后,这些对象类通过IoC容器联系起来。这样,对象通过IoC容器相互连接,但是对象之间没有直接的联系。

  在应用程序被引入IoC容器之前,对象A依赖于对象B,所以当对象A被实例化或运行到某一点时,它必须主动创建对象B或使用已经创建的对象B,其中控制权在应用程序本身。

  如果应用程序引入了Ioc容器,对象A和对象B之间的直接连接就丢失了。所以当对象A实例化运行时,如果需要对象B,IoC容器会在对象A需要的地方主动创建一个对象B注入(即依赖注入)。于是,对象A获取依赖对象B的过程由主动行为变为被动行为,即创建的对象交给IoC容器处理,控制权被反转,这就是所谓的控制权反转。

  DI-依赖注入

  在运行时,IoC容器动态地将一些依赖注入到对象中。比如将对象B注入(赋值)到对象a的成员变量中。

  事实上,依赖注入(DI)和控制反转(IoC)是对同一事物的不同描述。在某种程度上,它们是从不同的角度描述的。依赖注入是从应用的角度来描述的,即应用依赖于容器来创建和注入它所需要的外部资源;控制反转是从容器的角度来描述的,即容器控制应用程序,容器将应用程序所需的外部资源反向注入应用程序。这里所说的外部资源可以是外部实例对象,也可以是外部文件对象等。

  IoC与DI的实现

  (1)属性setter方法注入:是指IoC容器使用setter方法注入依赖实例。通过调用无参数构造函数或者无参数静态工厂方法实例化Bean后,调用Bean的setter方法可以实现基于setter方法的依赖注入。这种方法简单、直观、容易理解,所以弹簧的定型注射被广泛使用。

  包com . SSM . entry;

  公共类UserServiceImpl实现UserService {

  private UserDao userDao

  //setter()实现依赖注入。

  public void setUserDao(UserDao UserDao){

  this.userDao=userDao

  }

  公共void登录(){

  this . userdao . log in();

  system . out . println( user service log in );

  }

  } (2)构造方法注入:是指IoC容器使用构造方法注入依赖实例。基于构造方法的依赖注入是通过带参数调用构造方法实现的,每个参数代表一个依赖。

  applicationContext.xml

  ?xml版本=1.0 编码=UTF-8 ?

  beans xmlns= http://www . spring framework . org/schema/beans

  xmlns:xsi= http://www . w3 . org/2001/XML schema-instance

  xsi:schema location= http://www . spring framework . org/schema/beans

   http://www . spring framework . org/schema/beans/spring-beans-4.3 . xsd

  !-将指定的类配置为Spring,并让Spring创建其对象的实例来控制反转-

  bean id= UserDao class= com . SSM . entry . userdaoimpl /bean

  !-添加id为userService的Bean依赖注入-

  bean id= UserService class= com . SSM . entry . userserviceimpl

  !-将Bean名称UserDao注入到UserService实例中-

  属性名称=UserDao ref=UserDao/

  /bean

  /豆子IoC测试

  包com . SSM . entry;

  导入org . spring framework . context . application context;

  import org . spring framework . context . support . classpathmlaplicationcontext;

  公共级IoC {

  public static void main(string[]args)>

  application context application context=新类pathxmlapplicationcontext( application context。XML’);

  用户道用户道=(用户道)应用程序上下文。getbean(用户Dao );

  userDao.login():

  }

  }DI测试美元

  com.ssm.entry包:

  导入组织。springframework语境。应用程序上下文:

  导入组织。springframework语境。支持。类pathxmlapplicationcontext:

  公共类[

  public static void main(string[]args)>

  应用程序上下文应用程序上下文=新建

  classpathxmlapplicationcontext(应用程序上下文。XML’);

  用户服务用户服务=(用户服务)应用程序上下文。getbean(“用户服务”);

  userService.login():

  }

  }以上就是春天国际奥林匹克委员会和是吗详解的详细内容,更多请关注我们其它相关文章!

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

留言与评论(共有 条评论)
   
验证码: