码迷,mamicode.com
首页 > 编程语言 > 详细

java server之spring中的IOC如何用java实现?

时间:2015-12-04 10:40:53      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

** 什么是IOC?

一般的对象耦合是在编译时确定的,也就是说当我们写如下类:

public class StaticCoupling {

  String s = new String("hzg1981");

}

的时候,类StaticCoupling在编译期间就跟String类耦合在了一起。 在代码静态分析时,就可以确认它们之间的耦合。

 

而IOC 则是在运行期间才使用assembler object绑定需要耦合的对象。绑定过程是由依赖注入(DI)实现的。需要注意的是IOC和DI是有区别的。IOC是一种设计范式(design paradigm),IOC是依赖于DI的,DI用来实现IOC。 Dependency injection is a pattern used to create instances of objects that other objects rely on without knowing at compile time which class will be used to provide that functionality.

也就是说,DI是一种可以实现IOC的设计模式。DI不是唯一可以实现IOC的设计模式,有以下三种三种设计模式可以实现IOC设计范式:

1 工厂模式: factory pattern

2 服务定位器模式:service locator pattern

3  依赖注入模式。依赖注入又可以分为三种类型: 构造函数注入(constructor injection)  Setter注入(setter injection)   以及借口注入(interface injection)

 

** ioc的简单实现

什么是DI机制? (DI = IOC, Dependence Injection, Inverse of control)
依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色
需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中
创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者
因此也称为依赖注入。

为什么说IOC很简单呢?说白了其实就是由我们平常的new转成了使用反射来获取类的实例,相信任何人只要会用java的反射机制,那么自己写一个IOC框架也不是不可能的。

……
public ObjectgetInstance(String className) throws Exception
{
  Object obj = Class.forName(className).newInstance();
  Method[] methods = obj.getClass().getMethods();
  for (Method method : methods) {
    if (method.getName().intern() == "setString") {
      method.invoke(obj, "hello world!");
    }
  }
}
……

  上面的一个方法我们就很简单的使用了反射为指定的类的setString方法来设置一个hello world!字符串。其实可以看到IOC真的很简单,当然了IOC简单并不表示spring的IOC就简单,spring的IOC的功能强大就在于有一系 列非常强大的配置文件维护类,它们可以维护spring配置文件中的各个类的关系,这才是spring的IOC真正强大的地方。在spring的Bean 定义文件中,不仅可以为定义Bean设置属性,还支持Bean之间的继承、Bean的抽象和不同的获取方式等等功能。

 

 

 

** Spring中的IOC

ICO容器(Container): The org.springframework.beans.factory.BeanFactory  interface is the central IoC container interface in Spring.

 

 

参考文献:

http://howtodoinjava.com/2013/03/19/inversion-of-control-ioc-and-dependency-injection-di-patterns-in-spring-framework-and-related-interview-questions/

http://www.informit.com/articles/article.aspx?p=174533

http://javabeginnerstutorial.com/spring-framework-tutorial/spring-aopaspect-oriented-programming/

http://www.cnblogs.com/qqlin/archive/2012/10/09/2707075.html

java server之spring中的IOC如何用java实现?

标签:

原文地址:http://www.cnblogs.com/hzg1981/p/5018319.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!