2016-05-10 15 views
0

Ich stoße auf ein Problem beim Versuch, einen Spring-Cache zu implementieren.SpEL - Fehler: Methode kann nicht gefunden werden bei Typ

Ich kann nur einen schematischen Schnipsel liefern (real Code veröffentlichen würde mir wahrscheinlich gefeuert werden: S)

public class CacheTestServiceImpl { 

    @Cacheable(value=SOME_STRING_CONSTANT, key="#root.targetClass.createHashCode(#root.args[0])") 
    public int getID(String userName, String someOtherParam) { 
    } 

    public int createHashCode(String userName) { 
     return 0; 
    } 
} 

und den Fehler i immer halten wird EL1004E:(pos 18): Method createHashCode(String) cannot be found on CacheTestServiceImpl type.

Irgendwelche Vorschläge auf, was ich tun könnte falsch? wenn Sie weitere Informationen benötigen, würde ich mich freuen, es zu schaffen OFC :) dank

EDIT: Ich hatte gerade die „brillante“ Idee für den Fehlercode des Suchens selbst und ausgegraben dieses: relevant stack-oerflow question

so werde ich es überprüfen und diese Frage aktualisiert ..

Antwort

1

Sie versuchen, eine statische Methode createHashCode aufzurufen, noch Ihre Klasse deklarieren nicht vorhanden. Also, entweder machen Sie Ihre Methode statisch oder verwenden Sie #root.target.createHashCode(#root.args[0]) SpEL Ausdruck.

Siehe Spring Cache abstraction reference für weitere Informationen

+0

dies den Fehler verschwinden ließ, so basierend auf den Infos, die ich hier geben kann -> große Antwort :) aufgrund unserer Architektur ich denke, ich werde die gesamte Struktur ändern und geben Sie die Parameterklassen hashCode()/equals() überschreibt und verwendet die "Standardschlüsselgenerierung", die der Frühling hier scheinbar anbietet (gerade herausgefunden). – BassSultan

Verwandte Themen