2010-02-10 22 views
6

Mi piacerebbe utilizzare Spring con la configurazione Java, ma quasi tutti gli esempi sono scritti in XML e non so come tradurli in Java. Guardare a questi examples from Spring Security 3:Traduci la configurazione Spring XML nella configurazione Java

<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> 

Come potrebbe questo tradotto in Java config? O, più in generale, come posso tradurre Spring XML config in Java? C'è una piccola sezione su Java confing in the Spring reference ma non è così utile.

+0

L'attuale versione di Spring Security ha un supporto decente per Java Config, vedere http://docs.spring.io/spring-security/site/docs/3.2.6.RELEASE/reference/htmlsingle/#jc –

risposta

1

Non è possibile tradurre configurazioni XML con spazi dei nomi personalizzati (ad esempio http://www.springframework.org/schema/security). Tuttavia, è possibile combinare le configurazioni XML con Java utilizzando @ImportResource

+0

Grazie. Sembra che Spring rimarrà sempre un framework XML :-( – deamon

2

Questo è probabilmente più semplice di quanto si pensi. La primavera non sta facendo magie. Il parser di configurazione XML crea solo definizioni di bean e le registra con il bean factory. Puoi fare lo stesso creando DefaultListableBeanFactory e registrando le tue definizioni di bean con esso. L'errore principale qui è pensare "Accidenti, creerò i fagioli e li inserirò nel contesto dell'app". Questo approccio non funziona perché Spring crea pigramente i fagioli e l'API è costruita attorno all'idea di una fabbrica che viene chiamata quando necessario, non una fabbrica che fa tutto il lavoro all'avvio.

Here is some example code. Nota che questo esempio ha bisogno di molte più linee di codice, ma definendo i tuoi metodi di supporto, dovresti essere in grado di suddividerlo in qualcosa che dovrebbe essere alla pari con XML.

Controllare anche il source for the Spring unit tests per gli esempi.

Problemi correlati