# DDD4J-VertX基础框架 **Repository Path**: jensvn/ddd4j-vertx ## Basic Information - **Project Name**: DDD4J-VertX基础框架 - **Description**: DDD云原生Web框架!!!基于VertX响应式框架,使用类似SpringMVC方式使用注解简单开发基于VertX的DDD风格Web应用。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-02-26 - **Last Updated**: 2025-08-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DDD4j-Vertx #### 介绍 基于反射和vertx构建的仿spring的IOC+MVC框架,可以使用类似spring mvc方式使用注解简单开发基于vertx web的API接口,同时保留了vertx web的相关特性。 目前Controller类支持注解:@RestController、@RequestMapping 接口支持注解:@GetMapping、@PostMapping、@PutMapping、@DeleteMapping 参数支持注解:@RequestParameter、@RequestBody及对应的default值的定义。 项目可无缝集成至SpringBoot项目中 使用责任链模式编写,保留了拓展性;使用策略模式加工厂模式确保代码优雅可读性强。 ### 框架组件 1. ddd4j-core组件: 1. 支持IOC注解@Component、@Autowired,启动后扫描所有的类,实例化后注册到IOC容器中 2. 使用Vertx的EventBus实现注解@EventListener,基于@EventListener封装领域事件基类DomainEvent 3. MQ事件基类、@MQEventListener实现,引入ddd4j-mq组件即可发布/订阅MQ事件 4. 实现仓库基类、Model/Query基类(CQRS思想),实现R对象、Page对象基类,引入ddd4j-orm组件即可使用MybatisPlus做CRUD 5. 封装ConfigContext配置上下文(读取优先级:本地配置>远程配置>默认配置),TODO 封装RequestContext请求上下文 6. 集成@ConfigurationProperties注解作为配置定义,@Bean注解作为Bean装配的定义,实现@Bean的自动装配 7. 集成@RemoteClient注解,作为远程过程调用定义,引入ddd4j-cloud后可以使用远程过程调用 8. TODO 集成@Sentinel注解,作为限流注解定义,引入ddd4j-cloud后自动使用限流、熔断、降级功能 2. ddd4j-mvc组件: 1. 实现@RestController、@GetMapping、@PostMapping、@PutMapping、@DeleteMapping 2. TODO 添加WEB请求拦截器基类,实现上下文请求拦截器、R对象响应拦截器、统一异常捕获拦截器 3. ddd4j-orm组件: 1. 基础仓库的MybatisPlus实现,TODO 验证CURD逻辑 2. TODO MybatisPlus的配置注入到IOC容器中,后续从IOC容器中获取 3. TODO 实现@Transactional事务注解 4. TODO 扫描mapper.xml文件,能支持自定义SQL 4. ddd4j-cloud组件: 1. 集成Nacos服务注册中心,作为@Applcation注解的注册中心实现 2. 集成Nacos配置中心,作为@ConfigurationProperties注解的远程配置读取实现 3. 集成OpenFeign远程调用,作为@RemoteClient注解的远程调用实现 4. TODO 集成Ribbon限流、熔断、降级功能,作为@Sentinel注解的实现 5. ddd4j-mq组件: 1. 实现MQ组件,目前支持RocketMQ、Kafka、RabbitMQ、RedisPubsub、RedisStream 2. TODO 实现类配置在Nacos时,支持Nacos动态刷新动态切换实现 6. ddd4j-bom组件:统一管理第三方依赖包版本 7. ddd4j-parent组件:父工程依赖,快速搭建业务系统 8. ddd4j-monitor组件:log.error日志发送告警到企微/钉钉机器人 ### 使用方法 然后就可以在Controller中使用MVC注解编写接口了: ``` @RestController @RequestMapping("/demo") public class DemoController { @GetMapping("/hello") public R hello() { return R.ok("hello world"); } } ``` 启动后效果如下: ![img.png](img.png) 浏览器测试结果: ![img_1.png](img_1.png) ### 注意事项 所有的接口函数都会在vertx的NIO线程中执行,所以不要在这些方法中出现阻塞调用。