如何扩展playframework?

nie*_*els 30 playframework playframework-1.x

有时需要扩展框架.有时需要挂钩请求/响应生命周期,例如参数绑定或编写安全模块.怎么可以在playframework 1.x中完成?

nie*_*els 43

扩展播放1.x有两种方法.首先,您可以编写自己的模块.这详细描述在这里.如果要提供iText等库或提供特殊的身份验证机制,这非常有用.

第二种方式是写一个PlayPlugin.这通常在模块中完成,但这不是必要条件.写一个PlayPlugin需要两个步骤:

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

该数字定义了调用插件的顺序.我建议使用id> 1000.如果你想在框架插件之前加载它,请看这里(从1.1.1开始,id是有效的).

而已.要了解使用插件可以执行的操作,请参阅javadoc.你可以勾住:

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

不幸的是,javadoc文档很少,但请不要犹豫,查看playframework本身的代码.这很容易理解,并给你很好的想法.

  • 如果你使用eclipse,文件`play.plugins`将被复制到classes文件夹中.如果您从eclipse开始播放,播放将找到该文件两次并加载您的插件两次. (3认同)
  • 删除"conf"文件夹中的"play.plugins"文件可以解决问题 (3认同)
  • 我试过你的方法,但似乎我的插件加载了两次.我的日志sais:14:00:51,454 INFO~ - beforeInvocation controllers.MyPlugin@62d6a33f 14:00:51,454 INFO~ - beforeInvocation controllers.MyPlugin@7977afca:两个具有不同ID的对象 (2认同)
  • 是否还需要`play.plugins`文件? (2认同)