【发布时间】:2013-11-15 14:06:04
【问题描述】:
如何最方便地将状态注入环处理程序(不使用全局变量)?
这是一个例子:
(defroutes main-routes
(GET "/api/fu" [] (rest-of-the-app the-state)))
(def app
(-> (handler/api main-routes)))
我想让the-state 进入main-routes 的复合处理程序。状态可能类似于使用以下内容创建的地图:
(defn create-app-state []
{:db (connect-to-db)
:log (create-log)})
在非环形应用程序中,我会在主函数中创建状态并开始将其或其中的一部分作为函数参数注入到应用程序的不同组件中。
可以在不使用全局变量的情况下使用 ring 的 :init 函数完成类似的操作吗?
【问题讨论】:
-
您是在寻找每个会话状态还是全局状态?
-
global - 与 :init 和 :destroy 相同的生命周期
标签: dependency-injection clojure compojure ring