Плагины
Плагин 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 .