2015-07-21 12 views
6

La documentazione all'indirizzo https: // www.playframework.com/documentation/2.4.x/JavaDependencyInjection menzioni che Di è ora integrato nel quadro:Qual è il modo di avviare un'app di gioco con Java 2.4 con Spring?

Fuori dalla scatola, gioco fornisce supporto iniezione di dipendenza basata su JSR 330. Il valore di default JSR 330 di attuazione che viene fornito con Play è Guice, ma altri JSR 330 implementazioni può essere inserito.

non ho trovato alcuna HOWTO o esempio di lavoro che utilizza Primavera.

La documentazione corrente in https: // www.playframework.com/documentation/2.4.x/Tutorial collegamenti a un esempio "Gioca con Spring Data JPA" in https: // typesafe.com/activator/template/play -spring-data-jpa ma i commenti già menzionano che è obsoleto. Inoltre, nella pagina GitHub https: // github.com/typesafehub/play-spring-data-jpa ci sono problemi aperti che menzionano che non funziona in Play 2.4.0.

Il codice ha 2 anni e utilizza ancora la classe Global.java per avviare Spring. Mi andrebbe bene, ma il codice non viene più compilato in Play 2.4 a causa del metodo getControllerInstance().

Questo progetto https: // github.com/jroper/play-spring sembra promettente ma è in Scala, e ci sono molti TODO elencati e la classe SpringApplicationLoader su https: // github.com/jroper/play- spring/blob/master/core/src/main/scala/play/api/inject/spring/SpringApplicationLoader.scala sembra troppo complicato quando tutto ciò che voglio è avviare un semplice contesto Spring.

In questo momento sembra che devo downgrade Play per usare il vecchio Global.java Hack (e capire tutti i cambiamenti necessari ...)

(qualche editore pls mettere i collegamenti di nuovo in, hanno sono legittimi, non mi permette di ...)

risposta

6

Più persone hanno questo problema con Play 2.4, causando alcuni di loro con bastone 2.3.

Il problema con il testo che hai citato dalle funzionalità di Play è che suggerisce che con Play 2.4 è possibile collegare qualsiasi contenitore JSR 330, ma sfortunatamente è molto difficile e ad oggi non esistono ancora soluzioni pienamente funzionanti. Questo è fondamentalmente contro Plays propria filosofia, che recita:

In Play 2, abbiamo voluto renderlo veramente facile da usare qualsiasi driver di archivio di dati , ORM, o di qualsiasi altra libreria di accesso al database senza alcuna speciale integrazione con il framework web. (che non è il caso in cui si desidera utilizzare primavera ORM con Play 2.4.)

https://groups.google.com/forum/#!topic/play-framework/hFOtzSNSDsQ discute anche questo problema con i collegamenti ai vari tentativi di soluzione, di cui la migliore soluzione non è completamente funzionante, ma può soddisfare le vostre esigenze: https://github.com/zarinfam/play24-guice-spring

Un'altra soluzione potrebbe essere quella di creare un singleton per Springs ApplicationContext e utilizzare tale singleton nelle classi client di Play. Quindi (sfortunatamente) non hai un'iniezione di dipendenza all'interno di quelle classi, ma almeno puoi usare le tue classi non giocate in modo pulito con una modalità di iniezione.

Aggiornato: Ho appena creato questo lavoro modello Play-Java-Primavera a GitHub: https://github.com/jtdev/play-java-spring

+1

Sì, è così che ho fatto anche: Un servizio di Guice "@Singleton" dove "@Inject" ApplicationLifecycle e avvia manualmente il contenitore Spring. Quindi "@Inject" questo servizio Guice ovunque sia necessario accedere ai servizi di Spring. Non è perfetto, ma funziona. –

+3

Wow, la gente gioca a prendere delle decisioni strane con i loro aggiornamenti "minior". Migrare a 2.3 non è stato un compito facile perché hanno apportato grandi cambiamenti all'API e ora non possiamo migrare facilmente a 2.4 perché non c'è Global. In 2.5.1 non supportano JAVA e in 2.5.2 non c'è più SCALA. hahhaha – rsan

+1

Ciao @Devabc, stavo fermando l'aggiornamento a 2.4 ma voglio usare l'ultimo netty container e l'unico modo pulito è l'aggiornamento per giocare a 2.4 e versioni successive a 2.5. Hai mai sperimentato problemi con il tuo modello di Play-Java-Spring? Sovraccarico delle prestazioni? Funziona la specifica completa di SpringDI? Nel mio commento di settembre 2015 mi stavo prendendo gioco di come Play rompe la compatibilità tra le versioni. Stavo solo leggendo un momento fa la guida alla migrazione di 2.5 e sembra terribilmente lunga: S – rsan

Problemi correlati