本文目录
- spring中依赖注入的原理
- Spring DI 也就是IoC的原理是什么
- 对依赖注入的构造子注入的理解
- 控制反转和依赖注入的区别是什么
- Spring 依赖注入 谁依赖谁,谁注入谁,谁是谁的谁
- 如何理解IOC 依赖注入的思想(目前见过最好
- 控制反转和依赖注入的区别
spring中依赖注入的原理
Spring 从核心而言,是一个DI 容器,其设计哲学是提供一种无侵入式的高扩展性框架。即无需代码中涉及Spring专有类,即可将其纳入Spring容器进行管理。
作为对比,EJB则是一种高度侵入性的框架规范,它制定了众多的接口和编码规范,要求实现者必须 遵从。侵入性的后果就是,一旦系统基于侵入性框架设计开发,那么之后任何脱离这个框架的企图都将付 出极大的代价。
为了避免这种情况,实现无侵入性的目标。Spring 大量引入了Java 的Reflection机制,通过动态 调用的方式避免硬编码方式的约束,并在此基础上建立了其核心组件BeanFactory,以此作为其依赖注入机制的实现基础。
org.springframework.beans包中包括了这些核心组件的实现类,核心中的核心为BeanWrapper 和BeanFactory类。这两个类从技术角度而言并不复杂,但对于Spring 框架而言,却是关键所在。
InputStream is = new FileInputStream(“bean.xml“); XmlBeanFactory factory = new XmlBeanFactory(is); Action action = (Action) factory.getBean(“TheAction“);
此时获得的Action实例,由BeanFactory进行加载,并根据配置文件进行了初始化和属性设定。
联合上面关于BeanWrapper的内容,可以看到,BeanWrapper实现了针对单个Bean的属性设 定操作。而BeanFactory则是针对多个Bean的管理容器,根据给定的配置文件,BeanFactory从中读取 类名、属性名/值,然后通过Reflection机制进行Bean加载和属性设定。
Spring DI 也就是IoC的原理是什么
IOC是控制反转,所谓反转是指应用本身并不负责依赖对象的创建和维护,而把这个任务交给第三方即Spring去处理,这是将创建对象的权利交给第三方,控制反转就是控制权的转移DI是依赖注入.依赖注入,是指运行期间,Spring动态的将依赖对象注入到组件中。当IOC容器启动时,容器负责创建容器内的所有对象;根据配置信息形成对象之间的依赖关系;也就是说让别人(ioc)为你服务。这是核心。
对依赖注入的构造子注入的理解
其实所谓的依赖注入不是你去调用他的构造方法,而是容器去调用。比如spring容器。他的原理是,在spring的配置文件中,你可以配置注入的对象(一般来讲需要注入的对象定义的时候用接口定义),然后是 通过容器去得到此对象 ,在你的例子中,就是通过容器得到DIByConstructor,而不是你自己去构造。所以当你需要注入的对象更换的时候,只需要更改配置文件,就可以注入不同的对象,因为你始终是通过容器得到对象,所以这部分代码也不需要改变,因此耦合就非常低了,因为所有过程中,你只需要更改注入对象的实现以及更改配置文件。其实你应该结合实际去试试看到底怎么用的,就会非常清楚了。你给的例子什么问题也不能说明,必须将整个代码理解才行。
控制反转和依赖注入的区别是什么
区别:
控制反转:创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。依赖注入:创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。IOC模式,系统中通过引入实现了IOC模式的IOC容器,即可由IOC容器来管理对象的生命周期、依赖关系等,从而使得应用程序的配置和依赖性规范与实际的应用程序代码分开。其中一个特点就是通过文本的配置文件进行应用程序组件间相互关系的配置,而不用重新修改并编译具体的代码。
IoC中最基本的Java技术就是“反射”编程。反射又是一个生涩的名词,通俗的说反射就是根据给出的类名(字符串)来生成对象。这种编程方式可以让对象在生成时才决定要生成哪一种对象。反射的应用是很广泛的,象中都是用“反射”做为最基本的技术手段。
Spring 依赖注入 谁依赖谁,谁注入谁,谁是谁的谁
举个例子,平时我们没用spring的时候总是会这样写:UserDao userDao = new UserDao();userDao.find();,这时userDao这个对象依赖我们开发人员通过new UserDao();来实例化。然后spring依赖注入,看下面的代码,userDao对象是没有new的,如果你不用spring直接这么些肯定要报空指针的错误,但是如果你用了sping,spring容器会找到setUserDao方法,然后spring自动new一个userDao然后注入到setUserDao中。public class Demo{ private UserDao userDao; public void setUserDao(UserDao userDao){this.userDao = userDao;} public void testDemo(){ userDao.find(); }}最后总结:spring依赖注入说的是对象依赖spring容器帮你实例化(注入),所以很多人会把spring当作一个大的实例工厂,它帮程序生成并注入对象;依赖注入又叫控制反转,在没有spring的时候,对象实例化的控制权是交给程序员的,我们想怎么new又我们自己代码决定,而如果交给spring的话,我们就不用代码new对象了,我们把控制权交给spring容器,只要开发人员把xml文件写好就能保障对象的完美实例化了。
如何理解IOC 依赖注入的思想(目前见过最好
依赖注入: 依赖注入就是Spring设计思想中重要的一部分,它是指Ioc或DI,是一个重要的面向对象编程的法则来削减计算机程序的耦合问题.控制反转还有一个名字叫做依赖注入(Dependency Injection).简称DI. IoC 亦称为 “依赖倒置原理”(“Dependency I
控制反转和依赖注入的区别
概念:控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。依赖注入:组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。容器全权负责的组件的装配,它会把符合依赖关系的对象通过JavaBean属性或者构造函数传递给需要的对象。通过JavaBean属性注射依赖关系的做法称为设值方法注入(Setter Injection);将依赖关系作为构造函数参数传入的做法称为构造子注入(Constructor Injection) 区别:控制反转:创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。依赖注入:创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。