如何将bean作为自定义类型?

时间:2016-11-09 07:18:24

标签: java spring

class Proxy{
  private Class<?> customType;
  ..
}
interface Foo{
  public String foo();
  ..
}
<bean id="foo" class="com.test.Proxy">
  <property name="customType" value="com.test.Foo"/>
</bean>

除外

Bean foo是com.test.Foo的实例,而非com.test.Proxy

问题

我应该怎么做Proxy类,看起来spring提供了一个接口来做这个,但我真的不知道如何实现这个?

我也是谷歌搜索,但是找不到它,也许我使用的关键字是错的,任何人都可以帮助或给我一个指南链接,非常感谢。

结果

class Proxy<T> implements FactoryBean<T>{
  private Class<?> customType;
  public Class<?> getObjectType() {
    return customType;
  }
  public T getObject() throws Exception {
        return (T)customObj;
  }
  ..
}

1 个答案:

答案 0 :(得分:1)

您必须提供Foo的实现,因为您必须实例化实现而不是接口:

class Proxy{
  private Foo customType;
  ..
}

interface Foo{
  public String foo();
  ..
}

class FooImpl implements Foo{
  public String foo();
  ...
}    

然后在xml中,设置如下:

<bean id="foo" class="com.test.Proxy">
  <property name="customType">
     <bean class="com.test.FooImpl" />
  </property>
</bean>