Статьи

Play 2 — модули, плагины, какая разница?

Кажется, есть некоторая путаница в отношении модулей и плагинов Play 2. Я предполагаю, что это потому, что оба часто являются синонимами. В Play (обе версии — 1 и 2) есть четкие различия. В этой статье я расскажу о том, что такое плагин, как его реализовать в Java и Scala и как импортировать плагины из модулей.

Плагины

Плагин Play 2 — это класс, который расширяет класс Java play.Plugin или имеет признак Scala play.api.Plugin . Этот класс может быть чем-то, что вы написали в своем собственном приложении, или это может быть плагин из модуля.

Написание плагина на Java

Создайте новый класс и продлите его. Плагин. Есть три метода, доступных для переопределения — onStart (), onStop () и enabled (). Вы также можете добавить конструктор, который принимает аргумент play.Application .

Чтобы некоторые функции возникали при запуске приложения, переопределите onStart (). Чтобы функциональность возникала при остановке приложения, переопределите onStop (). Это так просто! Вот пример реализации, которая не переопределяет enabled ().

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
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");
  }
}

Подключить плагин к вашему приложению

Независимо от языка реализации, плагины вызываются непосредственно Play, как только вы добавили их в файл conf / play.plugins. Этот файл не создается при запуске нового приложения, поэтому вам нужно добавить его самостоятельно. Синтаксис: <приоритет>: <имя класса>. Например, чтобы добавить пример плагина в ваш проект, вы должны использовать

1
10000:be.objectify.example.MyExamplePlugin

Имя класса — это имя вашего плагина. Приоритет определяет порядок запуска плагинов, и просто должен быть числом, которое больше или меньше номера другого плагина. Если у вас есть несколько плагинов, вы можете явно заказать их:

1
2
5000:be.objectify.example.MyExamplePlugin
10000:be.objectify.example.MyOtherExamplePlugin

Модули

Модуль можно рассматривать как приложение многократного использования, которое вы можете включить в свое собственное приложение. Это аналог сторонней библиотеки, которая добавляет определенные функции. Модуль может содержать плагины, которые вы можете подключить к своему приложению с помощью файла conf / play.plugins.

Например, если вы используете Deadbolt 2, вам необходимо добавить в файл play.plugins следующее:

1
10000:be.objectify.deadbolt.DeadboltPlugin

Список модулей Play 2 можно найти на вики Play 2 GitHub .

Вы можете прочитать больше о создании модулей для Play 2 здесь и здесь .

Справка: Play 2 — модули, плагины, какая разница? от нашего партнера JCG Стива Чалонера в блоге Objectify .