2009-08-28 36 views
2

我開始學習scala,並嘗試構建一些簡單的應用程序來測試驅動語言。什麼是scala中級服務的優秀應用程序容器?

我正在尋找中層應用程序(而不是web框架)的非侵入式框架/容器。原來,因爲我對它非常熟悉,所以我將在春天開始。但是,鑑於scala提供了一種完全不同於java的方法。我想知道Spring是不是Scala的最佳框架,可以從scala中獲得最大的價值。我很想知道是否有新的更好的方式在Scala社區中做事。我對框架/容器的期望將能夠解決以下基本要素:配置,模塊化,監視(例如JMX),依賴注入。其他的東西,如JPA,JMS,連接池將是一個加號。

我聽說過Lift,但它似乎更像是一個Web框架。

謝謝

+0

今天晚些時候需要花點時間看看ScalaModules和Spring,看看哪個答案更好。如果有更多經驗的人能比較和比較這兩者,那將會很棒。 – 2009-08-31 17:49:22

+0

我選擇了Spring而不是ScalaModules和編譯時DI,主要是因爲後者的解決方案確實覆蓋了另外兩個區域的配置,監視。使用類型檢查進行編譯時依賴注入很酷。我認爲它在很小的依賴關係中工作正常。我的一個工作人員非常喜歡它,並試圖使多個小依賴集羣限制依賴性更改期間所需的編譯量。我可能會多探索一下。 – 2009-09-21 17:13:57

回答

1

我和你處於類似的位置,而且我一直和Spring保持一致:它工作得很好。唯一的煩惱是我的IDE(IntelliJ IDEA)內置了Spring支持,並在我的Spring配置文件標記爲錯誤時顯示錯誤。

我發現有一件事我可以做注射多服務實現,而不是通過Spring是使用Scala的trait s到使用的功能組成。例如,而不是使用:

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

我可能會使用:

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

雖然這是不太靈活的Java版本,對於大多數應用程序的服務實現之間切換的靈活性沒有必要。但是,它仍然保留了這樣一個事實:持久代碼不與其他業務邏輯混合在一起。

2

你看過OSGi嗎?我所看到的Scala包裝(ScalaModules)因爲它是pretty impressive

但請記住,Scala可以在編譯時以類型安全的方式執行依賴注入。我並沒有試圖推動你,只是指出了你沒有用過的東西。

相關問題