Каковы хорошие контейнеры приложений для сервисов среднего уровня для scala? - PullRequest
2 голосов
/ 29 августа 2009

Я начинаю изучать scala и пытаюсь создать несколько простых приложений для тестирования языка.

Я ищу ненавязчивый фреймворк / контейнер для приложений среднего уровня (не веб-фреймворк). Первоначально я собирался начать с весны, так как я очень хорошо с ней знаком. Тем не менее, учитывая, что Scala обеспечивает совершенно другой способ, чем Java. Интересно, является ли Spring лучшим фреймворком для scala, который может извлечь максимум из scala. Я хотел бы знать, есть ли новые и лучшие способы сделать что-то в сообществе scala.

Мои ожидания от фреймворка / контейнера смогут охватить следующие основные элементы: конфигурация, модульность, мониторинг (например, JMX), зависимое внедрение. другие вещи, такие как JPA, JMS, пул соединений будет плюсом.

Я слышал о Lift, но это скорее веб-фреймворк.

Спасибо

Ответы [ 2 ]

2 голосов
/ 29 августа 2009

Вы смотрели в OSGi? То, что я видел в оболочках Scala ( ScalaModules ), это довольно впечатляюще .

Помните, однако, что Scala может делать внедрение зависимостей безопасным для типов способом во время компиляции. Я не пытаюсь подтолкнуть вас к этому, просто указываю на то, чего у вас нет в Java.

1 голос
/ 29 августа 2009

Я был в таком же положении, что и вы, и я продолжал работать с Spring: все получилось просто отлично. Единственное раздражение в том, что моя IDE (IntelliJ IDEA) имеет встроенную поддержку Spring и помечает мои конфигурационные файлы Spring как полные ошибок, когда они в порядке.

Я обнаружил, что единственное, что я могу сделать вместо внедрения нескольких сервисных реализаций через Spring, - это использовать состав функциональности с использованием trait s в Scala. Например, вместо использования:

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

Я мог бы использовать:

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

Хотя это не совсем так, как гибкий как версия Java, для большинства приложений гибкость переключения между реализациями сервисов не является действительно необходимой. Однако он все еще сохраняет тот факт, что постоянный код не смешивается с остальной частью бизнес-логики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...