2016-11-09 2 views
0
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> 

AußerWie mache ich eine Bean als benutzerdefinierten Typ?

Bean foo sind die Instanzen von com.test.Foo, nicht com.test.Proxy

Frage

Wie soll ich in der Proxy-Klasse zu tun, ist es scheint Frühjahr bietet eine Schnittstelle zu tun damit, aber ich weiß wirklich nicht, wie man das erreicht?

Ich suche auch durch Google, aber finde es nicht, vielleicht war das Schlüsselwort, das ich verwendete, falsch, kann jemand helfen oder einen Führungslink zu mir geben, vielen Dank.

Ergebnis

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

Vielleicht werfen Sie einen Blick auf Java java.lang.reflect .Proxy und der InvocationHandler-Mechanismus. – GPI

Antwort

1

Sie müssen eine Implementierung von Foo bieten, wie Sie die Implementierung instanziiert müssen und nicht die Schnittstelle:

class Proxy{ 
    private Foo customType; 
    .. 
} 

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

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

Dann im xml, legen Sie es wie folgt aus:

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

danke, ich weiß, wie es jetzt geht, implementieren Sie 'FactoryBean's' getObjectType' und 'getObject' – Kerwin

Verwandte Themen