继承类play.PlayPlugin,我们可以实现插件的功能

本文介绍如何使用Play框架1.2.4版本进行插件开发,包括创建自定义插件的具体步骤,以及如何通过重写PlayPlugin类的方法来实现特定功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

play1.2.4版本:

 

继承类play.PlayPlugin,我们可以实现插件的功能。

 

play框架本身基于此类提供了一些已经实现的plugin,比如:ConfigurablePluginDisablingPlugin,CorePlugin, DBPlugin, Evolutions, JobsPlugin, JPAPlugin, MessagesPlugin, TempFilePlugin,ValidationPlugin, WS

这其中有我们非常熟悉的JobsPlugin,实现一些定时JOB,onApplicationStart()和onApplicationStop()在服务启动停止时实现一些我们自己的业务。

 

onApplicationStart()和onApplicationStop()都是PlayPlugin类的方法,当然还有很多其它方法,你只需要继承类并重写这些方法就可以实现自己需要的插件。

 

打开play-1.2.4.jar包,在根目录下,我们可以看到文件play.plugins,这里面列出了所有play已经实现的插件,该文件中列出的插件类在play启动时加载。打开看看内容:

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.plugins文件(名称必须为play.plugins,在play jar中写死了,否则无法加载),存放在app目录下。

 

好了,主要内容描述完了,下面来个简单例子,主要实现在所有action调用前做一些操作,你可以做用户校验,这里只简单做个公共变量配置,假设所有模板都需要这个变量的话:

 

第一步:定义一个类,名称无所谓,只要继承类play.PlayPlugin,并重写方法beforeActionInvocation

 

package plugin;

 

import java.lang.reflect.Method;

import play.PlayPlugin;

import play.mvc.Scope;

 

 

publicclass RenderPublicVariablePlugin extends PlayPlugin {

 

    @Override

    publicvoid beforeActionInvocation(Method actionMethod) {

        Scope.RenderArgs args = Scope.RenderArgs.current();

        args.put("test", "FROM plugin:this is the TEST parameter's value!");

    }

}

 

 

第二步:在app目录下添加文件play.plugins,内容如下:

2000:plugin.RenderPublicVariablePlugin

 

第三步?没有了,就是这么简单,这样你在所有模板里就可以直接引用变量test了。

 

后续需测试:

如果多个插件都实现beforeActionInvocation,程序会怎么处理,根据在play.plugins中列出的顺序先后执行?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值