ho definito interfacciaPrimavera 4 non può eseguire Java 8 metodi predefiniti
public interface MyInterface {
default void setOrder(int a){ }
default int getOrder(){return 123;}
}
e l'attuazione
public class MyInterfaceImpl implements MyInterface {}
Nel mio file di configurazione di primavera ho definito seguenti bean:
<bean id="a" class="my.package.MyInterfaceImpl">
<property name="order" value="999"/>
</bean>
Quando Creo il contesto di primavera che ho ricevuto l'errore seguente:
Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'order' of bean class [my.package.MyInterfaceImpl]: Bean property 'order' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
Sto usando la primavera nella versione 4.1.6.RELEASE. Quindi la mia domanda è perché non è possibile eseguire il metodo setOrder che è il metodo predefinito dall'interfaccia MyInterface? Sembra che la primavera ignori completamente tali metodi.
Posso solo fare un'ipotesi, ma forse Spring controlla i metodi impostando un valore e poi recuperandolo assumendo che il getter restituisca il valore precedentemente impostato. Nel tuo esempio questo non avrebbe avuto successo. Prova ad assegnarlo a un campo o a sostituirlo per testarlo. –
Si prega di provare a cambiare ' ' a ' ' come getter predefinito restituisce '123'not' 999 '. –