2014-03-19 82 views
5

我想知道在Java Play!Framework 2.2.x應用程序中使用非靜態控制器時是否有任何顯着的優點或劣勢。使用Java的播放框架中的靜態控制器和非靜態控制器之間的差異

我通常使用似乎是Play!的默認模式的clasic靜態控制器。

但是,無論何時我使用Guice,我顯然需要更改,以便我可以注入各種服務。

GET /api/something/someofthat controllers.MyController.myStaticAction 

GET /api/something/someother @controllers.MyController.myNonStaticAction 

public class MyController extends Controller { 

    public static Result myStaticAction(){ 
     return ok("This is not a method."); 
    } 

    public Result myNonStaticAction(){ 
     return ok("This is not a static method."); 
    } 

} 
從依賴注入的明顯的和有據可查的優勢

除了使用吉斯,它:對於那些想知道如何做到這一點(你在路徑文件中的函數「路徑」的前面加一個「@」)在我看來,純粹的非靜態控制器將有助於實現線程安全的代碼。但我必須說我不確定這一點。所以我的問題是:有人可以指出我推薦使用非靜態控制器的情況嗎?還有需要靜態控制器的情況?

它也對播放框架在控制器功能上做的「scala包裝」有什麼影響嗎?

非常感謝。

回答

2

你提到的依賴注入對我來說是應該始終使用非靜態控制器的原因。它使你的代碼更容易測試。

確實,非靜態控制器可以使編寫線程安全代碼變得更容易一些。如果你想直接在你的控制器中設置可變的(並且不是跨實例共享)狀態,那麼它是有幫助的,但是,如果你的程序沒有線程安全的代碼,控制器只是你的應用程序的一部分它不會拯救你。

想不出任何你想使用靜態控制器的原因。

相關問題