spring ioc di 怎么理解

spring ioc di 怎么理解,怎么使用,为什么会有它们

有只小跳蛙
浏览 836回答 2
2回答

幕布斯7119047

ioc即控制反转,粗浅点理解就是将创建bean(对象)的权利交予spring容器,让spring去控制。spring怎么控制-通过配置文件至于使用 一个简单的例子:比如我有一个UserService接口和他的一个实现类UserServiceImpl,现在要得到UserService的一个实例,就到spring的配置文件(xml)中配置相关信息。<bean&nbsp;id="userServiceId"&nbsp;class="com.csdn.ioc.UserServiceImpl"></bean> 其中class为UserServiceImpl的全限定名,id看测试类applicationContext.getBean("userServiceId",&nbsp;UserService.class)里的userServiceId 测试类: &nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;xmlPath&nbsp;=&nbsp;"com/csdn/ioc/beans.xml"; &nbsp;&nbsp;&nbsp;&nbsp;ApplicationContext&nbsp;applicationContext&nbsp;=&nbsp;new&nbsp;ClassPathXmlApplicationContext(xmlPath); &nbsp;&nbsp;&nbsp;&nbsp;UserService&nbsp;userService&nbsp;=&nbsp;applicationContext.getBean("userServiceId",&nbsp;UserService.class);这样就得到了一个UserService的实例,在这个过程中我们自己始终都没有new过一个对象,该过程都让spring完成了!di: 依赖注入 可以分开理解d-依赖:在A类中有B类作为A类的一个类属性,说A类依赖B类,形成依赖关系;i-注入:简单点理解其实就是setter注入;想想你学java基础面向对象封装时,定义一个Person类,类里面有很多属性,要给这些属性赋值是不是需要先new Person();然后再用对象的实例person.setxx("value")这样去给属性赋值,这个过程你就可以理解成注入;&nbsp;回到spring中:依赖注入也就是将注入的任务交给spring有一个Person接口和他的实现类PersonImpl,PersonImpl里有另一个接口Sleep做为PersonImpl的类属性public interface Person{} public&nbsp;class&nbsp;PersonImpl&nbsp;implements&nbsp;Person{ &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Sleep&nbsp;sleep; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;setSleep(Sleep&nbsp;sleep){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.sleep&nbsp;=&nbsp;sleep; &nbsp;&nbsp;&nbsp;&nbsp;} } 配置信息,实现注入 <bean&nbsp;id="person"&nbsp;class="com.csdn.di.PersonImpl"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<property&nbsp;name="sleep"&nbsp;ref="sleepId"></property> </bean> <bean&nbsp;id="sleepId"&nbsp;class="con.csdn.di.SleepImpl"></bean> 这样就将Sleep的实例注入到了PersonImpl中的类属性中了一个bean标签就时创建一个实例property就是设置属性,name属性的值就是类属性名,ref属性的值就是作为类属性那个类bean标签里的id;至于为什么要用他们,你会用了,用多了自然就知道为什么了

喵喵时光机

ioc控制反转,,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制;DI—Dependency Injection,即“依赖注入”, Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。
打开App,查看更多内容
随时随地看视频慕课网APP