2010-02-10 15 views
6

Ich möchte Spring mit Java-Konfiguration verwenden, aber fast alle Beispiele sind in XML geschrieben und ich weiß nicht, wie Sie sie in Java zu übersetzen. Schauen Sie sich diese examples from Spring Security 3:Übersetzen Spring XML-Konfiguration in Java-Konfiguration

<http auto-config='true'> 
    <intercept-url pattern="/**" access="ROLE_USER" /> 
</http> 

<authentication-manager> 
    <authentication-provider> 
     <user-service> 
     <user name="jimi" password="jimispassword" authorities="ROLE_USER, ROLE_ADMIN" /> 
     <user name="bob" password="bobspassword" authorities="ROLE_USER" /> 
     </user-service> 
    </authentication-provider> 
    </authentication-manager> 

    <password-encoder hash="sha"> 
    <salt-source user-property="username"/> 
    </password-encoder> 

Wie könnte dies zu Java Config übersetzt? Oder allgemeiner: Wie kann ich Spring XML-Konfiguration in Java übersetzen? Es gibt einen kleinen Abschnitt über Java confing in the Spring reference, aber es ist nicht so hilfreich.

+0

Die aktuelle Version von Spring Security bietet ordentliche Unterstützung für Java Config, siehe http://docs.spring.io/spring-security/site/docs/3.2.6.RELEASE/reference/htmlsingle/#jc –

Antwort

1

Sie können XML-Konfigurationen nicht mit benutzerdefinierten Namespaces (wie http://www.springframework.org/schema/security) übersetzen. Allerdings können Sie XML-Konfigurationen mit Java-basierten mischen mit @ImportResource

+0

Danke. Es scheint, als würde Spring immer ein XML-Framework bleiben :-( – deamon

2

Dies ist wahrscheinlich einfacher als Sie denken. Der Frühling macht keine Magie. Der XML-Konfigurationsparser erstellt nur Bean-Definitionen und registriert sie bei der Bean-Factory. Sie können dasselbe tun, indem Sie eine DefaultListableBeanFactory erstellen und Ihre Bean-Definitionen damit registrieren. Der Hauptfehler hier ist zu denken "gee, ich werde nur die Bohnen erstellen und sie in den App-Kontext". Dieser Ansatz funktioniert nicht, da Spring fleißig Bohnen erstellt und die API auf der Idee einer Fabrik basiert, die bei Bedarf aufgerufen wird, und nicht auf einer Fabrik, die die gesamte Arbeit beim Start erledigt.

Here is some example code. Beachten Sie, dass dieses Beispiel viel mehr Codezeilen benötigt, aber indem Sie Ihre eigenen Hilfsmethoden definieren, sollten Sie in der Lage sein, dies auf etwas zu reduzieren, das mit XML vergleichbar sein sollte.

Überprüfen Sie auch die source for the Spring unit tests für Beispiele.