scala – playframework的全球范围在哪里以及它消失的好处是什么
我正在读取playframework正在删除旧版2.4.x版本中的全局状态.
有人可以解释目前全球状态在哪里以及消除全球状态有什么好处? 解决方法
什么是全球国家?
有一个对象play.api.Play与以下字段: @volatile private[play] var _currentApp: Application = _ 在哪里使用? 每当你做Play.current时,你都会引用那个单一的可变全局字段.这在整个框架中用于访问以下内容: > play.api.Play.configuration采用隐式应用程序 为什么那么糟糕? 许多函数只是采用一个隐式应用程序,所以这不是真正的全局状态,对吧?我的意思是,你可以通过该应用程序.但是你从哪里得到它?通常,人们会导入play.api.Play.current. 另一个例子:假设您要开发一个调用Web服务的组件.这类的依赖是什么? WSClient.现在,如果你想获得一个实例,你需要调用play.api.libs.ws.WS.client并传入一个应用程序.因此,您在逻辑上仅依赖于Web服务客户端的漂亮小组件现在依赖于整个应用程序. 另一个重要因素和前一点的直接后果是测试.假设您要测试Web服务组件.从理论上讲,您只需要模拟(或提供一些虚拟实现)Web服务客户端.但是现在你的代码中的某个地方你正在调用play.api.Play.current,你需要确保在调用它时设置该字段.确保这一点的最简单方法是启动播放应用程序.因此,您只是为了测试您的小组件而启动整个应用程序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |