如何扩展Play框架?

30

有时需要扩展框架。有时需要挂钩请求/响应生命周期,例如进行参数绑定或编写安全模块。 如何在PlayFramework 1.x中完成此操作?

1个回答

43

有两种方法可以扩展Play 1.x。首先,您可以编写自己的模块。详细介绍了这一点,请点击此处。如果您想提供像iText这样的库或提供特殊的身份验证机制,则此方法很有用。

第二种方法是编写PlayPlugin。通常在模块中完成此操作,但这不是必要条件。编写PlayPlugin需要两个步骤:

  1. 编写一个扩展类PlayPlugin并覆盖其方法,例如myPackage.MyPlugin.
  2. 注册您的插件。这是通过创建名为play.plugins的文件并将其放入类路径中来完成的。该文件必须包含一行类似于1003:myPackage.MyPlugin的内容。

数字定义了调用插件的顺序。我建议使用id > 1000。如果您希望在框架插件之前加载它,请看这里(自1.1.1起,这些id是有效的)。

就这样。为了了解插件能做什么,请查看javadoc。您可以挂钩:

  • 请求/响应循环
  • 绑定过程
  • 应用程序启动/停止
  • 类加载

不幸的是,javadoc文档很少,但请随时查看playframework本身的代码。它易于理解并提供了很好的思路。


2
我尝试了你的方法,但似乎我的插件被加载了两次。我的日志显示:14:00:51,454 INFO ~ -- beforeInvocation controllers.MyPlugin@62d6a33f 14:00:51,454 INFO ~ -- beforeInvocation controllers.MyPlugin@7977afca:两个具有不同ID的对象。 - Piotr Gwiazda
3
如果您使用 Eclipse,文件 play.plugins 会被复制到 classes 文件夹中。如果您从 Eclipse 启动 Play,则 Play 会找到该文件两次并加载您的插件两次。 - niels
3
将“play.plugins”文件放入“conf”文件夹中即可解决问题。 - Filipe Miguel Fonseca
2
play.plugins 文件是否仍然需要? - Eran Medan
1
我在版本1.3中进行了测试(并查看了源代码,因为我没有找到这篇文章),仍然需要play.plugins。 - Michal Bernhard
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接