2017-03-26 2 views
0

Dies kann wie ein Duplikat von this question aussehen. Aber das ist anders. Ich habe versucht, meinen Legacy-Code mithilfe der Methodeninjektion im Frühjahr zu refaktorieren.Ungültige Eigenschaft der Bean-Klasse ist nicht beschreibbar oder eine ungültige Setter-Methode

Ich habe eine Bean-Klasse, die viele statische Hilfsmethoden enthält. Meine gezielte Methode wie folgt:

Context.java


private static MessageSender messageSender; 

//... 

public static MessageSender getMessageSender(){ 
    return messageSender; 
} 

Context bean


<bean id="context" class="org.abc.Context"> 

    <property name="messageSender"><ref bean="mailMessageSender"/></property> 
</bean> 

MailMessageSender.java


public abstract class MailMessageSender{ 

    protected abstract Session createSession(); 

    //using createSession() somewhere in this class 
} 

MailMessageSender bean


<bean id="session" class="javax.mail.Session" scope="prototype" /> 

<bean id="mailMessageSender" class="org.abc.MailMessageSender"> 
    <lookup-method name="createSession" bean="session"/> 
</bean> 

Ich erhalte Fehler ungültige Eigenschaft, wenn ich das Projekt bin installieren.

+2

Message keine Eigenschaft ist. Es ist ein statisches Feld. Sie können keine statischen Felder injizieren. –

Antwort

0

Sie können nicht statische Feld injizieren, Ihre Variable in Context.java ändern so geworden:

private MessageSender messageSender; 

//... 

public MessageSender getMessageSender(){ 
    return messageSender; 
} 
+0

Es ist nicht möglich, 'getMessageSender()' zu entfernen ** statische ** Verhalten. –

Verwandte Themen