Tutti i miei commenti dovrebbero essere presi con un pizzico di sale. Sono stato un utente Spring dalla versione 1.0; Non ho mai utilizzato alcuna versione di EJB in produzione, dalla versione 1.0 ad oggi.
La primavera mi ha servito bene: qualsiasi tecnica che vorrei applicare da Java EE è disponibile per me in primavera. Ho utilizzato i servizi Web, LDAP, messaggistica e moduli portlet insieme ai soliti sospetti di persistenza, servizi remoti e web MVC. Il codice è eccellente. Trovo che l'enfasi sulla stratificazione, sulla codifica per le interfacce, sull'integrazione delle dipendenze e sulla programmazione orientata all'aspetto sia vantaggiosa per i miei progetti.
La verità è che puoi scegliere o farlo funzionare. C'è poco vantaggio o svantaggio a questo punto, perché EJB 3 ha preso così tanto da Spring che dovrebbero essere simili. Non posso dirlo per esperienza personale, perché non ho usato EJB 3.
Nessuno dei miei datori di lavoro o clienti chiedono a gran voce l'EJB 3. Le persone nel mio mercato utilizzano Spring o .NET per parlare con i servizi web su HTTP.
Gli EJB richiedono l'utilizzo di RMI o CORBA come protocollo di rete. Credo che i protocolli basati su HTTP, che si tratti di RPC-XML, SOAP o REST, stanno vincendo, perché di solito è semplice e aperto.
Nessuno può predire il futuro, quindi la consulenza sul lavoro non vale nulla. Le tue condizioni di mercato locali potrebbero non essere le stesse di quelle del mio. Puoi proteggere le tue scommesse e imparare entrambi. Qualunque sia la tua scelta, è quasi certo che dovrai imparare qualcosa di nuovo in futuro che non sarà né EJB né Spring. Quindi sceglierne uno e sii pronto a cambiare.
La primavera è solo uno strumento. Spesso, più strumenti sai come usare meglio sarà. – DwB