首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Spring的FactoryBean的使用

2012-08-21 
Spring的FactoryBean的应用今天无意中碰到一下奇怪的问题,在比较配置文件和源代码的时候我很疑惑,为什么类

Spring的FactoryBean的应用

今天无意中碰到一下奇怪的问题,在比较配置文件和源代码的时候我很疑惑,为什么类型都不对头,怎么可以注入的?答案就在FactoryBean的这两个方法里

public abstract interface FactoryBean {  public abstract java.lang.Object getObject();  public abstract java.lang.Class getObjectType();}

?spring在加载这样的(实现了FactoryBean接口的)factorybean的时候就会根据这两个方法来决定类型和实例。

?

举例说明:

Spring配置文件中的bean

?

<bean id="group" ref="dog" /></bean><bean id="dog" value="jim" /></bean>

?Group.java

public class Group {private Cat cat;public void setCat(Cat cat) {this.cat = cat;}}

?如果只是这样写,spring肯定是注入不成功的,此时将Dog类实现FactoryBean

public class Dog implements FactoryBean {    private String name;    public Object getObject() throws Exception {Cat cat = new cat("tom");return cat;}public Class getObjectType() {return Cat.class;}public boolean isSingleton() {return true;}        public void setName(String name){                this.name = name;     }?}

?这样spring解析Dog类的时候,会调用getObject()和getObjectType()方法,返回值类型为Cat类型,这样就可以注入成功了

?

?

热点排行