JAVA反射,IoC和DI

一.JAVA反射

1.什么是JAVA反射

通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编译期就确定下来的,而 Java 反射机制可以动态地创建对象并调用其属性,这样的对象的类型在编译期是未知的。所以我们可以通过反射机制直接创建对象,即使这个对象的类型在编译期是未知的。

2.JAVA反射的功能

在运行时判断任意一个对象所属的类;
在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法);
在运行时调用任意一个对象的方法

3.实例讲解

https://liqita.iteye.com/blog/1635210

二.IoC(控制反转)和DI(依赖注入)

  • 为何是反转,哪些方面反转了:

有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。
用图例说明一下,传统程序设计如图1,都是主动去创建相关对象然后再组合起来:


image.png
  • 当有了IOC的容器后,在客户端类中不再主动去创建这些对象了

image.png
  • IoC能做什么

由IOC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。

  • IoC和DI

它们是同一个概念的不同角度描述,由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),所以2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”,相对IOC 而言,“依赖注入”明确描述了“被注入对象依赖IOC容器配置依赖对象”。

你可能感兴趣的:(JAVA反射,IoC和DI)