Spring的核心机制依赖注入简介

http://tech.ddvip.com   2006年11月20日    社区交流

本文详细介绍Spring的核心机制依赖注入简介

  Spring会自动接管每个bean定义里的property元素定义。Spring会在执行无参数的构造器后、创建默认的bean实例后,调用对应的setter方法为程序注入属性值。property定义的属性值将不再由该bean来主动创建、管理,而改为被动接收Spring的注入。

  每个bean的id属性是该bean的惟一标识,程序通过id属性访问bean,bean与bean的依赖关系也通过id属性完成。

  下面看主程序部分:

public class BeanTest
{
 //主方法,程序的入口
 public static void main(String[] args)throws Exception
 {
  //因为是独立的应用程序,显式地实例化Spring的上下文。
  ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");
  //通过Person bean的id来获取bean实例,面向接口编程,因此
  //此处强制类型转换为接口类型
  Person p = (Person)ctx.getBean("chinese");
  //直接执行Person的userAxe()方法。
  p.useAxe();
 }
}

  程序的执行结果如下:

  石斧砍柴好慢

  主程序调用Person的useAxe()方法时,该方法的方法体内需要使用Axe的实例,但程序里没有任何地方将特定的Person实例和Axe实例耦合在一起。或者说,程序里没有为Person实例传入Axe的实例,Axe实例由Spring在运行期间动态注入。

  Person实例不仅不需要了解Axe实例的具体实现,甚至无须了解Axe的创建过程。程序在运行到需要Axe实例的时候,Spring创建了Axe实例,然后注入给需要Axe实例的调用者。Person实例运行到需要Axe实例的地方,自然就产生了Axe实例,用来供Person实例使用。

  调用者不仅无须关心被调用者的实现过程,连工厂定位都可以省略(真是按需分配啊!)。下面也给出使用Ant编译和运行该应用的简单脚本:

来源:csdn    责编:豆豆技术应用

正在加载评论...