【Spring的自动装配】

采用构造函数注入,以及setter方法注入都需要写大量的XML配置文件,这时可以采用另一种方式,就是自动装,由Spring来给我们自动装配我们的Bean.

  Spring提供了四种自动装配类型

  1:ByName 采用这种方式时给属性自动注入值时,会根据Bean里的setXXX中的XXX去搜寻有没有id=XXX的Bean,有的话,将其自动注入,没有的话,就表示setXXX里要装入属性没有装配值。

  2:ByType 采用这种方式给属性自动注入值时,会根据Bean里的setXXX中的参数类型来搜寻配置文件中的Bean定义,如果发现了一个,就自动将其注入,否则如果有0个这个属性没有被装配,如果有多个,则会抛出异常。

  3:constructor 这种方式的注入与ByType其实没什么区别,无非是将ByType移入到了构造函数中,这种方式下,构造函数是自动注入的,在构造对象时,会自动根据构造函数的参数类型搜寻Bean,如果有一个合适的,则成功,一个没有,则失败,有多个,则会抛出异常。

  4:autodetect 自动检测方式,会采用如下流程,先按照constructor方式,再按照ByType方式。

  例子源代码如下

  例子一个Java工程师从一个网站上买东本

  一个普通的JavaBean

  [java]

  interface Engineer{

  Object buyApple();

  }

  public class JavaEngineer implements Engineer{

  private String name;

  private Website ws;

  public JavaEngineer(String name){

  this.name=name;

  }

  public void setWebsite(Website ws){

  this.ws=ws;

  }

  @Override

  public String toString() {

  // TODO Auto-generated method stub

  return super.toString();

  }

  public Object buyApple(){

  System.out.print("工程师"+name);

  return ws.buyApple();

  }

  }

  interface Engineer{

  Object buyApple();

  }

  public class JavaEngineer implements Engineer{

  private String name;

  private Website ws;

  public JavaEngineer(String name){

  this.name=name;

  }

  public void setWebsite(Website ws){

  this.ws=ws;

  }

  @Override

  public String toString() {

  // TODO Auto-generated method stub

  return super.toString();

  }

  public Object buyApple(){

  System.out.print("工程师"+name);

  return ws.buyApple();

  }

  }

更多精彩教程请关注:win7旗舰版系统下载

posted @ 2013-08-10 14:35  豆豆逗逗  阅读(140)  评论(0编辑  收藏  举报