{"id":17004313,"url":"https://github.com/chunmenglu/jfinal-event","last_synced_at":"2025-04-12T07:07:12.467Z","repository":{"id":47592397,"uuid":"66321491","full_name":"ChunMengLu/JFinal-event","owner":"ChunMengLu","description":"JFinal-event消息驱动插件","archived":false,"fork":false,"pushed_at":"2022-02-20T03:04:22.000Z","size":2640,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2024-04-24T12:06:19.916Z","etag":null,"topics":["jfinal"],"latest_commit_sha":null,"homepage":"http://www.dreamlu.net","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ChunMengLu.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-23T01:29:00.000Z","updated_at":"2024-04-24T12:06:19.917Z","dependencies_parsed_at":"2022-08-29T20:51:01.764Z","dependency_job_id":null,"html_url":"https://github.com/ChunMengLu/JFinal-event","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChunMengLu%2FJFinal-event","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChunMengLu%2FJFinal-event/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChunMengLu%2FJFinal-event/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChunMengLu%2FJFinal-event/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChunMengLu","download_url":"https://codeload.github.com/ChunMengLu/JFinal-event/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219848638,"owners_count":16556333,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jfinal"],"created_at":"2024-10-14T04:43:19.763Z","updated_at":"2024-10-14T04:43:20.463Z","avatar_url":"https://github.com/ChunMengLu.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JFinal event 事件驱动\n\n[![Mica Maven release](https://img.shields.io/nexus/r/https/oss.sonatype.org/net.dreamlu/JFinal-event.svg?style=flat-square)](https://mvnrepository.com/artifact/net.dreamlu/JFinal-event)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/917161e0c2174fa6aff8d92a7f4a47a3)](https://www.codacy.com/app/ChunMengLu/JFinal-event?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=ChunMengLu/JFinal-event\u0026amp;utm_campaign=Badge_Grade)\n\n模仿的Spring中的消息事件：[详解Spring事件驱动模型](http://jinnianshilongnian.iteye.com/blog/1902886)\n\n专为JFinal设计，无任何第三方依赖，小巧玲珑。\n\n## **目录说明**\n\n1. JFinal-event，JFinal-event 源码。\n2. JFinal-event-demo，JFinal-event 使用 demo。\n3. JFinal-eventx，Idea 插件 [试用下载](https://gitee.com/596392912/JFinal-event/attach_files) \n\n## idea 插件效果演示\n\n![如梦技术](docs/img/JFinal-eventx-presentation.gif)\n\n## 初始化插件\n```java\n// 初始化插件\nEventPlugin plugin = new EventPlugin();\n// 设置为异步，默认同步，或者使用`threadPool(ExecutorService executorService)`自定义线程池。\nplugin.async();\n\n// 开启类扫描，默认为 false，用于不支持注解处理器的情况，用于不使用 maven 或者不支持注解处理器的情况。\n// 你也可以根据 JFinal.me().getConstants().getDevMode()，判断是否开启类扫描，因为注解处理器 maven 是支持的。\nplugin.enableClassScan();\n// 扫描 jar 里的 监听器，默认不扫描，在开启 enableClassScan 有效果\nplugin.scanJar();\n// 扫描的包，默认全扫描，可提升启动速度，在开启 enableClassScan 有效果\nplugin.scanPackage(\"com.xxx.包名\");\n\n// 手动启动插件，用于main方法启动，jfinal中不需要，添加插件即可。\nplugin.start();\n\n// 停止插件，用于main方法测试\nplugin.stop();\n```\n\n## 新建事件类（任意模型即可 2.3.0支持）\n```java\npublic class AccountEvent {\n\n\tprivate Integer id;\n\tprivate String name;\n\tprivate Integer age;\n\n\t// 省略 get set\n\n}\n```\n\n## 编写监听\n```java\n@EventListener\npublic void listenTest1Event(AccountEvent event) {\n    System.out.println(\"AccountEvent：\" + event);\n}\n\n@EventListener\npublic void allEvent(Object event) {\n    // 监听所有的事件\n    System.out.println(\"allEvent:\\t\" + event);\n}\n```\n\n## 发送事件\n```java\nAccountEvent event = new AccountEvent();\nevent.setId(1);\nevent.setName(\"张三\");\nevent.setAge(18);\n\nEventKit.post(event);\n```\n\n## @EventListener注解说明\n\n### 示例\n```java\n@EventListener(events = Test1Event.class, order = 1, async = true, condition = \"event.isExec()\")\n```\n\n### 说明\n\u003e `value` 或 `events`支持的事件类型数组，用于将事件方法定义为`ApplicationEvent`或者自定义父类。\n\n```java\npublic class Test {\n\n    @EventListener({Test1Event.class, Test2Event.class})\n    public void applicationEvent(ApplicationEvent event) {\n        String xx = (String) event.getSource();\n        System.out.println(Thread.currentThread().getName() + \"\\tsource:\" + xx);\n    }\n}\n```\n\n\u003e `order`排序，数值越小越先执行，默认为`Integer.MAX_VALUE`\n\n\u003e `async`异步执行，需要插件开启`async()`或者自定义线程池。\n\n\u003e `condition`表达式条件，使用`event.xxxx，event.isExec() == true`判定event的属性或者方法。\n\n## 使用的场景优势\n请参考[详解Spring事件驱动模型](http://jinnianshilongnian.iteye.com/blog/1902886)\n\njar包下载\nhttps://repo1.maven.org/maven2/net/dreamlu/JFinal-event/\n\n\n以上版本均已上传到maven仓库~\n\n### maven\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003enet.dreamlu\u003c/groupId\u003e\n    \u003cartifactId\u003eJFinal-event\u003c/artifactId\u003e\n    \u003cversion\u003e3.1.3\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### gradle \u003e= 5.x\n\n```groovy\napi(\"net.dreamlu:JFinal-event:3.1.3\")\nannotationProcessor(\"net.dreamlu:JFinal-event:3.1.3\")\n```\n\n### gradle \u003c 5.x\n\n```groovy\ncompile(\"net.dreamlu:JFinal-event:3.1.3\")\n```\n\n### `注意`\n\n* `3.0.0` 由于使用了 `Annotation Processor` 技术，Idea 需要开启注解处理器。\n* 如果你的开发工具不支持 `Annotation Processor`，3.1.3 可开启类扫描。\n\n## License\n\n( The MIT License )\n\n## 开源推荐\n\n* `mica` Spring boot 微服务核心组件集：[https://gitee.com/596392912/mica](https://gitee.com/596392912/mica)\n* `Avue` 一款基于vue可配置化的神奇框架：[https://gitee.com/smallweigit/avue](https://gitee.com/smallweigit/avue)\n* `pig` 宇宙最强微服务（架构师必备）：[https://gitee.com/log4j/pig](https://gitee.com/log4j/pig)\n* `SpringBlade` 完整的线上解决方案（企业开发必备）：[https://gitee.com/smallc/SpringBlade](https://gitee.com/smallc/SpringBlade)\n* `IJPay` 支付SDK让支付触手可及：[https://gitee.com/javen205/IJPay](https://gitee.com/javen205/IJPay)\n\n## 微信公众号\n\n![如梦技术](docs/img/dreamlu-weixin.jpg)\n\n精彩内容每日推荐！!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchunmenglu%2Fjfinal-event","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchunmenglu%2Fjfinal-event","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchunmenglu%2Fjfinal-event/lists"}