播放2 –模块,插件有什么区别?

关于Play 2模块和插件似乎有些混乱。 我想这是因为两者经常是同义词。 在Play(两个版本-1和2)中,存在明显的差异。 在本文中,我将介绍什么是插件,如何在Java和Scala中实现插件,以及如何从模块导入插件。

外挂程式

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;
    }

    @Override
    public void onStart()
    {
        Configuration configuration = application.configuration();
        // you can now access the application.conf settings, including any custom ones you have added
        Logger.info("MyExamplePlugin has started");
    }

    @Override
    public void onStop()
    {
        // you may want to tidy up resources here
        Logger.info("MyExamplePlugin has stopped");
    }
}

在Scala中编写插件

创建一个新的Scala类,并扩展play.api.Plugin。 与Java版本一样,有onStart(),onStop()和enabled()方法以及play.api.Application构造函数参数。 这是Scala的实现:

package be.objectify.example

import 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 added
    Logger.info("MyExamplePlugin has started");
  }

  override def onStop()
  {
    // you may want to tidy up resources here
    Logger.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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值