播放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;}@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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux多线程贝叶斯建树教程,建树经验.doc

建树经验分子进化树构建及数据分析的简介mediocrebeing, rodger, lylover, klaus, oldfish, yzwpf一、引言开始动笔写这篇短文之前&#xff0c;我问自己&#xff0c;为什么要写这样的文章&#xff1f;写这样的文章有实际的意义吗&#xff1f;我希望能够解决什么样的问题&#x…

Android的IPC机制(一)——AIDL的使用

综述 IPC(interprocess communication)是指进程间通信&#xff0c;也就是在两个进程间进行数据交互。不同的操作系统都有他们自己的一套IPC机制。例如在Linux操作系统中可以通过管道、信号量、消息队列、内存共享、套接字等进行进程间通信。那么在Android系统中我们可以通过Bin…

python学习笔记(python介绍)

为什么要学python&#xff1f; python和shell的比较&#xff0c;和PHP、和JAVA比较 运维开发只是用到python的很小一部分 python在一些知名公司的应用&#xff1a; 谷歌&#xff1a;python的创始人原来在谷歌工作。 CIA&#xff1a;美国中情局网站用python开发的 NASA&#xff…

Netty:透明地使用SPDY和HTTP

大多数人已经从谷歌那里听说过SPDY&#xff0c;该协议被提议作为老化的HTTP协议的替代品。 Web服务器是浏览器正在缓慢地实现该协议&#xff0c;并且支持正在增长。 在最近的文章中&#xff0c;我已经写过SPDY的工作方式以及如何在Jetty中启用SPDY支持。 由于Netty&#xff08;…

selenium 等待页面加载完成

一、隐形加载等待&#xff1a; file:///C:/Users/leixiaoj/Desktop/test.html 该页面负责创建一个div <html> <head><title>Set Timeout</title><style>.red_box {background-color: red; width 20%; height:100px; border: none;}</style&…

linux nfsnobody用户,处理CentOS 5.5 x64 配置NFS服务过程中nfsnobody用户造成的问题

4、我们编译一下这个NFS的配置文件。[rootNFS /]# vi /etc/exports/share 192.168.60.0/24(rw,sync,all_squash,root_squash) (我们允许这个共享对192.168.60.0/24网段可读可写&#xff0c;且将所有访问者包括root的身份都改为nfsnobody)[rootNFS /]# /etc/init.d/nfs resta…

计算机语言

软件&#xff1a;是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件。 系统软件 系统软件是各类操作系统&#xff0c;如windows、Linux、UNIX等&#xff0c;还包括操作系统的补丁程序及硬件驱动程序&#xf…

Apache Shiro第2部分–领域,数据库和PGP证书

这是致力于Apache Shiro的系列文章的第二部分。 我们从简单的不安全Web应用程序开始了上一部分 。 完成后&#xff0c;该应用程序具有基本的身份验证和授权。 用户可以登录和注销。 所有网页和按钮均已分配和实施访问权限。 授权和身份验证数据都已存储在静态配置文件中。 正如…

js中变量作用域的小理解

一&#xff1a;变量作用域 在js代码中每个变量都是有自己的作用域的&#xff0c;js中不像C语言有块级作用域的概念&#xff0c;取而代之的是函数作用域&#xff0c;看如下代码&#xff1a; var scope"global"; function init(){ alert(scope);var scope "local…

安卓linux开机画面,Android系统的开机画面显示过程分析(1)

好几个月都没有更新过博客了&#xff0c;从今天开始&#xff0c;老罗将尝试对Android系统的UI实现作一个系统的分析&#xff0c;也算是落实之前所作出的承诺。提到Android系统的UI&#xff0c;我们最先接触到的便是系统在启动过程中所出现的画面了。Android系统在启动的过程中&…

如果你的NavigationDrawer里面的Item没有响应,Drawer不能左滑关闭

如果你的NavigationDrawer里面的Item没有响应&#xff0c;Drawer不能左滑关闭&#xff0c;应该是因为你没有把主要内容放在DrawerLayout标签下的第一位。 The main content view (the FrameLayout above) must be the first child in the DrawerLayout because the XML order i…

JAXB和未映射的属性

JAXB&#xff08;JSR-222&#xff09;是例外配置&#xff0c;这意味着存在默认映射应用于域对象。 这意味着有时您需要显式排除字段/属性。 在本文中&#xff0c;我将讨论如何使用XmlTransient或XmlAccessorType&#xff08;XmlAccessType.NONE&#xff09;以及何时使用每个选项…

sublime text3 使用SVN插件

Simon在项目中经常使用SVN&#xff0c;每次都要切换提交&#xff0c;很麻烦&#xff0c;有了这个SVN插件就很方便了&#xff0c;使用快捷方式提交&#xff0c;更新。 安装: Ctrl Shift P 调用出Sublime Text的包管理工具&#xff0c;输入TortoiseSVN&#xff0c;回车进行安装…

c语言空格有什么作用,空格在c语言中怎么表示 C语言中的空格字符怎么表示

c语言中表示空格的是什么代码&#xff1f;分析如下&#xff1a; 不是所有字符都需要转义的&#xff0c;空格直接就敲空格&#xff0c;或者使用ASCII码值赋值为32。 空格没有转义字符。合法转义字符如下&#xff1a;\a 响铃(BEL) 、\b 退格(BS)、\f 换页(FF)、\n 换行(LF)、\r 回…

二维数组实现八皇后问题

之前关八皇后的问题全部使用的是一维数组进行实现(http://www.cnblogs.com/SeaSky0606/p/4604955.html)&#xff0c;现改一种数据存储方式&#xff0c;按照8x8的二维棋盘存储皇后。基本逻辑不变&#xff0c;可参见如下代码&#xff1a; #include<cstdio> #include<alg…

Java的深度:通过协方差暴露的API泄漏

Java有时可能非常棘手&#xff0c;特别是在API设计中。 让我们看一个非常有趣的展示柜。 jOOQ强烈地将API与实现分开。 所有API都在org.jooq包中&#xff0c;并且是公共的。 大多数实现都在org.jooq.impl包和package-private中。 只有工厂和一些专用的基础实现是公开的。 这允许…

StringMVC 中如何做数据校验

步骤一&#xff1a;引入四个jar包 步骤二&#xff1a;注册类型转换器 <context:component-scan base-package"cn.happy.controller"></context:component-scan><!-- 配置验证器 --><bean id"myvalidator" class"org.springframe…

ibm+x3650+m4+linux+raid驱动,IBM X3650M4阵列卡驱动下载

ibm X3650M4raid阵列卡驱动适合安装windowsserver2008,windowsserver2008R2,系统问题&#xff0c;服务器问题&#xff0c;可以联系我们也可以到5分享论坛发帖求助。IBM System x3650 M4服务器是一款应用最为广泛的2U机架服务器&#xff0c;支持Xeon E5-2600机架服务器的所有产品…

为什么在Java 6上Math.round(0.499999999999999917)舍入为1

总览 错误表示错误和算术舍入错误有两种类型&#xff0c;它们在浮点计算中很常见。 在此简单示例中&#xff0c;这两个错误组合在一起&#xff0c;在Java 6中Math.round&#xff08;0.4999999999999999999917&#xff09;舍入为1。 表示错误 浮点数是以2为底的格式&#xff0c…

单利模式

class Singleton{ public:static Singleton* GetInstance(){if (m_pInstance nullptr){m_pInstance new Singleton;}return m_pInstance;} private:Singleton(){}//需要将构造和析构定义成私有的防止外界构造和析构~Singleton(){}static Singleton* m_pInstance;//static所有…