外挂程式
Play 2插件是扩展Java类play.Plugin的类,或具有Scala特性play.api.Plugin的类 。 此类可能是您在自己的应用程序中编写的,也可能是模块中的插件。
用Java编写插件
创建新的类,并扩展play.Plugin。 有三种方法可以覆盖– onStart(),onStop()和enabled()。 您还可以添加一个带有play.Application参数的构造函数。
要在应用程序启动时具有某些功能,请重写onStart()。 要使功能在应用程序停止时发生,请覆盖onStop()。 就这么简单! 这是一个不覆盖enabled()的示例实现。
package be.objectify.example;import play.Application;
import play.Configuration;
import play.Logger;
import play.Plugin;/*** An example Play 2 plugin written in Java.*/
public class MyExamplePlugin extends Plugin
{private final Application application;public MyExamplePlugin(Application application){this.application = application;}@Overridepublic void onStart(){Configuration configuration = application.configuration();// you can now access the application.conf settings, including any custom ones you have addedLogger.info("MyExamplePlugin has started");}@Overridepublic void onStop(){// you may want to tidy up resources hereLogger.info("MyExamplePlugin has stopped");}
}
在Scala中编写插件
创建一个新的Scala类,并扩展play.api.Plugin。 与Java版本一样,有onStart(),onStop()和enabled()方法以及play.api.Application构造函数参数。 这是Scala的实现:
package be.objectify.exampleimport play.api.{Logger, Application, Plugin}/*** An example Play 2 plugin written in Scala.*/
class MyExamplePlugin(application: Application) extends Plugin
{override def onStart(){val configuration = application.configuration;// you can now access the application.conf settings, including any custom ones you have addedLogger.info("MyExamplePlugin has started");}override def onStop(){// you may want to tidy up resources hereLogger.info("MyExamplePlugin has stopped");}
}
将插件挂接到您的应用程序中
不管使用哪种实现语言,将插件添加到conf / play.plugins文件后,插件都会直接由Play调用。 启动新应用程序时不会创建此文件,因此您需要自己添加它。 语法为<priority>:<classname>。 例如,要将示例插件添加到您的项目中,可以使用
10000:be.objectify.example.MyExamplePlugin
类名称是您的插件的名称。 优先级确定插件启动的顺序,只需要一个大于或小于另一个插件的数字即可。 如果您有多个插件,则可以显式订购它们:
5000:be.objectify.example.MyExamplePlugin
10000:be.objectify.example.MyOtherExamplePlugin
模组
可以将模块视为可重用的应用程序,您可以将其包含在自己的应用程序中。 它类似于添加特定功能的第三方库。 一个模块可以包含插件,您可以使用conf / play.plugins文件将其挂接到您的应用程序中。
例如,如果您使用的是Deadbolt 2,则需要在play.plugins文件中添加以下内容:
10000:be.objectify.deadbolt.DeadboltPlugin
可以在Play 2 GitHub Wiki上找到Play 2模块的列表。
您可以在此处和此处阅读有关为Play 2创建模块的更多信息 。
参考: 播放2 –模块,插件有什么区别? 来自我们的JCG合作伙伴 Steve Chaloner,来自Objectify博客。
翻译自: https://www.javacodegeeks.com/2012/05/play-2-modules-plugins-whats-difference.html