1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/596392912-JFinal-event

Клонировать/Скачать
README.md 6.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 13:39 95f7b04

JFinal event 事件驱动

Содержание

  1. JFinal-event, исходный код JFinal-event.
  2. JFinal-event-demo, пример использования JFinal-event.
  3. JFinal-eventx, плагин для Idea скачать пробную версию.

Демонстрация эффекта плагина Idea

Как в мечтах

Инициализация плагина

// Инициализируем плагин
EventPlugin plugin = new EventPlugin();
// Устанавливаем асинхронность, по умолчанию используется синхронизация, либо используем `threadPool(ExecutorService executorService)` для настройки пула потоков.
plugin.async();

// Включаем сканирование классов, по умолчанию отключено, используется при отсутствии поддержки обработчика аннотаций (maven), либо при использовании maven, но без поддержки обработчиков аннотаций.
// Также можно использовать JFinal.me().getConstants().getDevMode() для определения необходимости включения сканирования классов, поскольку обработчики аннотаций в maven поддерживаются.
plugin.enableClassScan();
// Сканируем jar на наличие слушателей, по умолчанию не сканируем, включение сканирования классов имеет эффект.
plugin.scanJar();
// Указываем пакет для сканирования, по умолчанию сканируется всё, что можно ускорить запуск, включается при включении сканирования классов.
plugin.scanPackage("com.xxx.пакет");

// Ручной запуск плагина, используется в методе main, в jfinal не требуется, достаточно добавить плагин.
plugin.start();

// Остановка плагина для тестирования в методе main.
plugin.stop();

Создание класса события (можно использовать любую модель после версии 2.3.0)

public class AccountEvent {

	private Integer id;
	private String name;
	private Integer age;

	// Опускаем геттеры и сеттеры

}

Написание прослушивателя

@EventListener
public void listenTest1Event(AccountEvent event) {
    System.out.println("AccountEvent: " + event);
}

@EventListener
public void allEvent(Object event) {
    // Прослушивание всех событий
    System.out.println("allEvent:\t" + event);
}

Отправка события

AccountEvent event = new AccountEvent();
event.setId(1);
event.setName("Чжан Сань");
event.setAge(18);

EventKit.post(event);

Описание аннотации @EventListener

Пример

@EventListener(events = Test1Event.class, order = 1, async = true, condition = "event.isExec()")

Описание

value или events поддерживают типы событий массива, которые используются для определения методов событий как ApplicationEvent или пользовательского родительского класса.

public class Test {

    @EventListener({Test1Event.class, Test2Event.class})
    public void applicationEvent(ApplicationEvent event) {
        String xx = (String) event.getSource();
        System.out.println(Thread.currentThread().getName() + "\tsource:" + xx);
    }
}

order определяет порядок выполнения, чем меньше значение, тем раньше выполняется, по умолчанию — Integer.MAX_VALUE. async указывает на асинхронное выполнение, требуется включить async() в плагине или настроить пул потоков. condition представляет собой выражение условия, использующее event.xxxx, event.isExec() для проверки свойств или методов события.

Сценарии использования

Пожалуйста, обратитесь к подробному описанию модели Spring на основе событий.

Скачать jar-файл можно по ссылке: https://repo1.maven.org/maven2/net/dreamlu/JFinal-event/.

Maven

<dependency>
    <groupId>net.dreamlu</groupId>
    <artifactId>JFinal-event</artifactId>
    <version>3.1.3</version>
</dependency>

Gradle >= 5.x

api("net.dreamlu:JFinal-event:3.1.3")
annotationProcessor("net.dreamlu:JFinal-event:3.1.3")

Gradle < 5.x

compile("net.dreamlu:JFinal-event:3.1.3")

Примечание

  • В версии 3.0.0 используется технология Annotation Processor, поэтому в Idea необходимо включить обработку аннотаций.
  • Если ваш инструмент разработки не поддерживает Annotation Processor, в версии 3.1.3 можно включить сканирование классов.

Лицензия

( The MIT License )

Рекомендации по открытым исходным кодам

Номер WeChat

Как во сне

Интересные статьи каждый день!

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/596392912-JFinal-event.git
git@api.gitlife.ru:oschina-mirror/596392912-JFinal-event.git
oschina-mirror
596392912-JFinal-event
596392912-JFinal-event
master