我剛剛開始,我不認爲我很瞭解它。從我所瞭解的所有控制器在創建路由器的那一刻起就被創建爲依賴關係。然後,他們繼續活動,直到應用程序終止時路由器死亡。如果是這種情況,將他們宣佈爲單身人士似乎是多餘的。爲什麼在播放2.5中使用單聲道控制器?
回答
爲了擺脫全局狀態(這違背了無狀態的設計思路)發揮引進DI(我覺得周圍V2.4)和V2.5它現在使用的注射路由器默認。 Google Guice是由Play打包的默認DI框架(您可以使用其他框架,但Guice是默認設置)。現在(一般情況下)Guice認爲創建Controller的新實例比使用Singleton更快,並且更安全線程 - 請參閱Guice docs for more。
如果您將have a need限制爲只有1個控制器的實例,那麼您可以將其標記爲單例,但您必須將其設置爲Thread-safe,因爲它將在線程之間共享。
我認爲Activator模板可以用更多的文檔來解決它們爲什麼看起來會生成@Singleton
控制器,因爲它們似乎並不需要,因爲它很混亂。例如HomeController
(在Play-Scala種子中)例如當它沒有展示任何情況時被混淆地宣佈爲@Singleton
。
一般來說,最好不要使用@Singleton
,除非您對不變性和線程安全性有公正的理解。如果你認爲你有一個Singleton的用例,只要確保你保護了任何共享狀態。
簡而言之,請勿使用@Singleton
。
所以最好的做法是將每個控制器聲明爲@Singleton? –
我想我還是有點困惑。我仍然能夠看到更多的一個實例將被創建的時間。所以單身符號似乎仍然是多餘的。此外,我的印象是,所有請求都由同一個線程處理,所以無論它是無狀態還是不是無關緊要 – user25470
@ user25470每個請求1個線程,否則所有請求都必須排隊等待其開啓1這意味着你的應用程序非常緩慢。您可能已經閱讀過文檔中的操作意圖是非阻塞的 - 這意味着您不應該在控制器操作中做任何可能導致其切換上下文(例如,I/O)的事情 - 這是因爲默認Play的線程池是主機上每個核心的1個線程。所以一個線程被分配一個請求,快速執行這個動作(非阻塞),然後迅速返回到緩衝池來處理下一個請求。 – Nio
如果你有一個由路由器實例化的控制器(即默認值),那麼它們是隱含的單例,因爲路由器只存在一次。但是,如果您將控制器注入其他地方,除非將其標記爲單例,否則您仍會獲得新實例。
來源:https://github.com/playframework/playframework/issues/4508#issuecomment-127820190
- 1. 單聲道多聲道播放器
- 2. 用單聲道播放mp3
- 3. 播放聲道
- 4. AVPlayer播放單聲道音頻立體聲 - >單聲道
- 5. iphone - AVAudioRecorder給單聲道播放(聲音在短短的一個通道播放)
- 6. 播放框架2.1 - 使用java.util.properties在播放控制器
- 7. 單聲道播放單聲道wav文件
- 8. 聲音爲什麼不播放?
- 9. MediaPlay無法播放聲音,爲什麼?
- 10. 什麼用於在Silverlight中爲wp7播放聲音效果
- 11. 在linux上的視頻播放器c#單聲道
- 12. 爲什麼我的YouTube在webview播放中只能播放聲音?
- 13. Play.current在播放中已棄用2.5
- 14. FlipsideViewController知道什麼歌正在播放
- 15. 控制YouTube播放器
- 16. 爲什麼在Cocos2d中播放聲音時會有延遲?
- 17. html5使用什麼視頻播放器?
- 18. 在視圖控制器之間導航時播放聲音
- 19. 播放2.5:從API
- 20. 播放2.5和YourKit
- 21. 爲什麼我能夠在控制器中使用控制器陣列?
- 22. 你爲什麼要把控制器放在AngularJS的指令中?
- 23. 如何在openAL或Finch中播放特定聲音時控制播放音量?
- 24. Spring如何從jsp中知道使用什麼控制器?
- 25. 我如何知道自定義soundcloud播放器正在播放什麼?
- 26. 播放2.5.x java - 如何從另一個控制器調用控制器方法?
- 27. iOS音頻播放器 - 在左右聲道中同步文件
- 28. 斯卡拉播放框架 - 控制器作爲類或單身
- 29. 使用Python播放雙聲道聲音PyAudio
- 30. 在safari中使用javascript播放聲音
你不必聲明他們是單身人士。你從哪裏讀到的? – Nio
無處。但是如果你看看播放裝置附帶的控制器,它們都被標註爲Singeltons – user25470
啊我看到了,我在下面放了一個更大的評論 - 它是關於無國籍的。 – Nio