// Инициализируем плагин
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();
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(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/.
<dependency>
<groupId>net.dreamlu</groupId>
<artifactId>JFinal-event</artifactId>
<version>3.1.3</version>
</dependency>
api("net.dreamlu:JFinal-event:3.1.3")
annotationProcessor("net.dreamlu:JFinal-event:3.1.3")
compile("net.dreamlu:JFinal-event:3.1.3")
Annotation Processor
, поэтому в Idea необходимо включить обработку аннотаций.Annotation Processor
, в версии 3.1.3 можно включить сканирование классов.( The MIT License )
mica
Spring boot микросервисный основной компонент: https://gitee.com/596392912/mica
Avue
— настраиваемый фреймворк на базе vue: https://gitee.com/smallweigit/avue
pig
— самый мощный микросервис во вселенной (обязательно для архитекторов): https://gitee.com/log4j/pig
SpringBlade
— комплексное решение для онлайн-приложений (необходимо для корпоративных разработчиков): https://gitee.com/smallc/SpringBlade
IJPay
— платёжный SDK для упрощения платежей: https://gitee.com/javen205/IJPay
Интересные статьи каждый день!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )