外掛程式
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