我正在尝试了解如何在Play Framework(1.2.5)中使用PlayPlugin对象。
不同Play线程之间是否共享相同的PlayPlugin实例?
通过一些源代码查询,我认为是的,但由于Play在很多地方都有一些元编程,而且我对这一切并不熟悉,我不是百分百肯定。
为PlayPlugin.beforeInvocation调用堆栈:
Thread.currentThread().setContextClassLoader(Play.classloader)
可能会影响Play.PluginCollection。所有主题的单个实例-behaviour也将由文章Play Framework: Introduction to Writing Modules确认:
beforeActionInvocation():此代码在控制器之前执行 调用。用于验证,Play也使用它。 您还可以将其他对象放入渲染中 这里的论点。几个插件也在里面设置了一些变量 线程本地以确保它们是线程安全的。
所以,我想答案是肯定的,实例是共享的,但是想确认一下。
答案 0 :(得分:0)
你是对的。每个PlayPlugin实例(当然是子类)在整个JVM中共享。您可以通过Play.plugin(class<T> clazz)
方法调用获取该实例。