Plugin可以做那些事情
能够在play容器启动、关闭、重新加载的时刻,做资源加载等操作
Controller参数绑定
Http请求的一个filter
Play自带的plugin
0:play.CorePlugin
100:play.data.parsing.TempFilePlugin
200:play.data.validation.ValidationPlugin
300:play.db.DBPlugin
400:play.db.jpa.JPAPlugin
450:play.db.Evolutions
500:play.i18n.MessagesPlugin
600:play.libs.WS
700:play.jobs.JobsPlugin
100000:play.plugins.ConfigurablePluginDisablingPlugin
Play自带Plugin作用
插件
说明
play.CorePlugin
拦截/@status请求
返回play应用的状态
调用Ehancer插件做一些类增强操作
play.data.parsing.TempFilePlugin 上传文件时,创建临时文件,并在请求执行完后删除临时文件夹.
play.data.validation.ValidationPlugin action方法调用前,调用oval框架验证
play.db.DBPlugin 创建数据库连接池
play.db.jpa.JPAPlugin JPA相关操作,Entity类增强以及事务处理
play.i18n.MessagesPlugin 国际化
play.libs.WS 类似于HttpClient里net的工具类
play.job.JobsPlugin 初始化Play任务(job)
ConfigurablePluginDisablingPlugin 将启用的plugin加载到plya.plugins.PluginCollection中,所有plugin的启动顺序必须早于该插件
如何配置plugin
在app目录下新建play.plugins(只能是该文件名和后缀)
在play.plugins文件中新增记录, index:className(完整的类名). 例如:
注意:加入play.plugins配置中的插件默认是开启的
停用plugin
在play的*.conf文件中,配置
plugins.disable=className
plugins.disable.anything=className
className是存在与play.plugins中配置的插件完整类名
建议:将一些不需要的plugin停用掉
自定义plugin
l 继承play.PlayPlugin类
PlayPlugin重点方法说明
onApplicationStart() 在容器启动时候调用
afterApplicationStart()在容器启动后调用
onApplicationStop() 在容器停止的时候调用
* Invocation*() play处理请求前后成功失败等情况调用 详见源码(play.Invoker.Invocation.run())
* ActionInvocation*() controller执行前后成功失败等情况调用 详见源码(play.mvc.ActionInvoker.invoke(Request, Response))
serveStatic() :用于处理静态文件,如果plugin处理了则返回true
rawInvocation:是否由plugin处理请求
getStatus() :获取状态
getMessage():通过locale获取国际化的信息,会根据优先级来获取,但是如果高优先级返回了,则低优先级无法调用
loadTemplate() : 获取模板
bind():绑定controller方法参数

928

被折叠的 条评论
为什么被折叠?



