组件 模块 插件

关于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

组件 模块 插件

组件 模块 插件_播放2 –模块,插件有什么区别?相关推荐

  1. 分而治之_播放框架模块:分而治之

    分而治之 通常情况是您开始开发应用程序并继续满足需求. 当您的应用程序变得更大时,您开始意识到将其分为不同组件的便利. 而且,当您开发第二个或第三个应用程序时,您开始认识到可以在不同应用程序之间重用的 ...

  2. golang 热插拨 插件_从零开始实现一个插件化框架(一)

    欢迎关注专栏:里面定期分享Android和Flutter架构技术知识点及解析,还会不断更新的BATJ面试专题,欢迎大家前来探讨交流,如有好的文章也欢迎投稿. Flutter跨平台开发终极之选​zhua ...

  3. netbeans插件_如何编写NetBeans插件

    netbeans插件 是否想在NetBeans IDE中添加功能或自动执行某些操作? 跟随我们编写您的第一个NetBeans插件. 让我们超越简单的工具栏示例 ,创建一个可以自动更新的插件. 该代码基 ...

  4. html组态插件_组态 web组态 插件 编辑器 使用说明书

    一.插件目录 init.json 插件初始化配置 initConfig.js 插件初始化方法 module_config.json 所有的组件配置都放在这里,要添加组件需要在这里面添加. exampl ...

  5. ps光效插件_全套光效PS插件(2019),只有你想不到的,没有它做不到的PS特效...

    小优姐姐又来给你们送福利啦,一定要看完文章哦,末尾有惊喜(*^▽^*) 好啦,言归正传,你们是不是每次拍照的时候都想拥有一束非常好的光线效果呀 如果光线太强,拍照片的时候不仅刺眼而且还会遮挡住你的照片 ...

  6. Vue插件_自己封装插件_以及使用自定义插件---vue工作笔记0017

    然后我们再来看插件的使用. vue官网上也提供了,怎么样来自己开发插件. 我们自己开发一个插件,并且使用 首先我们把插件包括在一个函数中去, (function(){ })()

  7. 不同型号的二极管模块并联_常见消防模块的接线方法和实物演示

    源自丨当宁消防网 ,版权归原作者所有! 很多筒子在网上搜索消防模块接线方法和接线图,其实消防模块的接线方法和接线图是不能一概而论的,不同类型的消防模块接线方法也不一样. 现在以常见的海湾GST-LD- ...

  8. java实现语法高亮插件_通用代码高亮插件(SyntaxHighlighter)

    写这篇博文的起源是我想把自己的博客弄的更加美观,相信你也一样. 首先,我要说SyntaxHighlighter插件的实现方式及应用示例,然后再说明如何将其应用到自己的博客,使博客的代码着色更加美观. ...

  9. vst和vst3插件_如何使用VST插件改善Twitch流音频

    vst和vst3插件 Twitch streamers with noisy microphones will be happy to hear that OBS, the most popular ...

最新文章

  1. 突然吐字不清_突然口齿不清是什么病
  2. JavaScript的标签
  3. 5、Dcoker 容器数据卷用-v命令添加
  4. Ubuntu安装Navicat正版永久使用方法
  5. 2.6.24及以上版本内核裁剪后启动黑屏的解决办法
  6. 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
  7. tensorflow中batch normalization的用法
  8. linux 关闭桌面环境,Ubuntu 14.04上的Cinnamon桌面环境PPA被关闭
  9. 【集合】Java 集合的ConcurrentModificationException
  10. wextend matlab,小波学习之三(多孔算法与MATLAB swt剖析)转载
  11. javaweb开发后端常用技术_java后端开发需要掌握什么技术
  12. 微机原理与接口技术-第二版-课后习题答案 绪论
  13. python列表元素按条件分组_python-按值分组列表
  14. 错误:There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate
  15. 我与编程,编程予我。
  16. java 发送网易邮箱邮件
  17. APUE读书笔记-第十五章-进程间通信
  18. x%10在c语言中神魔意思,x在C语言中是什么意思?
  19. wireshark分析数据包
  20. Lora技术应用领域有哪些?

热门文章

  1. 漫画:什么是字典序算法
  2. 算法二之树形选择排序
  3. vue+elementui中,el-select多选下拉列表中,如何同时获取:value和:label的值?
  4. 来自学长同学分享的学习方法
  5. ssh(Spring+Spring mvc+hibernate)——Dept.hbm.xml
  6. IDEA无法加载log文件
  7. Spark之Master主备切换机制原理
  8. mybatis=<>的写法
  9. android查看wifi是否双频,Android判断wifi是5G还是2.4G
  10. python内置模块有哪些_python中那些小众但有用的内置模块