2009-08-28 7 views
2

Je commence à apprendre la scala et à essayer de construire des applications simples pour tester la langue.Quels sont les bons conteneurs d'applications pour les services de niveau intermédiaire pour scala?

Je suis à la recherche d'un cadre/conteneur non intrusif pour les applications de niveau intermédiaire (pas le framework web). À l'origine, j'étais sur le point de partir avec le printemps car je le connais très bien. Cependant, étant donné que scala fournit une manière très différente de faire chose que Java. Je me demande si le printemps est le meilleur cadre pour scala qui peut prendre le plus de valeurs de scala. J'aimerais savoir s'il existe de nouvelles et meilleures façons de faire des choses dans la communauté scala.

Mes attentes envers le cadre/conteneur pourront traiter les éléments de base suivants: configuration, modularisation, surveillance (par exemple JMX), injection dépendante. D'autres choses comme JPA, JMS, conneciton pooling seront un plus.

J'ai entendu parler de Lift, mais il semble que ce soit plutôt un framework web.

Merci

+0

besoin de passer du temps plus tard aujourd'hui à regarder ScalaModules et Spring pour voir quelle est la meilleure réponse. Ce sera génial si quelqu'un avec plus d'expérience peut comparer et contraster les deux. –

+0

J'ai choisi Spring au lieu de ScalaModules avec DI à la compilation principalement parce que cette dernière solution couvre les deux autres zones de configuration, de surveillance. L'injection de dépendances à la compilation avec vérification de type est cool. Je pense que cela fonctionne bien dans un petit groupe de dépendances. Un de mes employés l'aimait vraiment et essayait de faire en sorte que les multiples petits groupes de dépendances limitent la quantité de compilation nécessaire lors des changements de dépendance. J'en explorerais probablement un peu plus. –

Répondre

1

J'étais dans une position similaire à vous et j'ai gardé avec le printemps: ça a très bien fonctionné. Le seul ennui est que mon IDE (IntelliJ IDEA) a intégré le support de Spring et marque mes fichiers de configuration de printemps comme étant pleins d'erreurs quand ils vont bien.

J'ai trouvé qu'une chose que je peux faire au lieu d'injecter plusieurs services mises en œuvre via Spring est d'utiliser la composition des fonctionnalités à l'aide de trait Scala s. Par exemple, au lieu d'utiliser:

public SomeBusinessClass { 
    private PersistenceService dao; 
    private ValidationService validator; 
    //setters, business logic etc 
} 

je pourrais utiliser:

public class SomeBusinessClass extends Persistence with Validation { 
    @BeanProperty 
    var dataSource: DataSource = _ 
} 

Bien que ce n'est pas tout à fait aussi souple que la version Java, pour la plupart des applications la flexibilité de la commutation entre les implémentations de service est pas vraiment nécessaire. Cependant, il conserve toujours le fait que le code persistant n'est pas associé au reste de la logique métier.

2

Avez-vous regardé dans OSGi? Ce que j'ai vu des wrappers Scala (ScalaModules) pour cela est pretty impressive. Rappelez-vous, cependant, que Scala peut effectuer une injection de dépendance de manière sécurisée lors de la compilation. Je n'essaie pas de vous pousser dedans, juste en soulignant quelque chose que vous n'avez pas avec Java.

Questions connexes