# xiangboot **Repository Path**: moon_egg/xiangboot ## Basic Information - **Project Name**: xiangboot - **Description**: xiangBoot是一款以Maven为基础,以Netty作为Http服务器的仿Springboot框架,完成了Springboot大部分的功能. 借此帮助深刻理解Spring框架,并且提升编程水平。 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-18 - **Last Updated**: 2022-06-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # xiangboot ## 介绍 xiangBoot是一款以Maven为基础,以Netty作为Http服务器的仿Springboot框架,完成了Springboot大部分的功能,旨在学习Spring的编程思想以及提升自己的编程水平。 ## 特性 - 放弃原内嵌式的tomcat,使用netty编写http服务器 - 实现了@RestController、@GetMapping、@PostMapping等一系列SpringMVC路由注解功能 - 使用Jackson序列化对response进行封装 - 实现基于json格式的@RequestBody post请求 - 实现Spring的IOC容器,依赖注入,通过三级缓存解决循环依赖-Aop等问题 - 与SpringBoot一致完备的启动方式 ## 项目结构 - annotation —— 注解包,存放Spring、SpringMVC等相关注解 - common —— 一些公共文件包,如打印等banner - constant —— 常量文件包 - core —— 核心代码包,内涵IOC、AOP、SpringMVC等的具体实现 - entity —— 对象实体包 - exception —— 异常包,定义在项目运行过程中可能出现的异常 - serialize —— 序列化包,使用的是json序列化 - utils —— 工具类包,包括反射工具类等 - JsonBootApplication —— run启动类,相当于是SpringBoot的SpringBootApplication,内置run方法启动 ## 目前完成的功能 1. 使用netty编写http服务器 2. 完成注解@GetMapping @PostMapping的路由映射 3. 完成@RestController scan包功能 4. 完成@RequestParam 参数映射功能与get请求(暂时只能单个参数映射,后续映射到实体) 5. 使用Jackson序列化进行response的封装 6. 封装httpResponse异常实体 7. 实现@RequestBody的post请求(暂时只实现了json格式传输,表单格式后面补充。有RequestBody标注的实体与json内容对应,没有标注的与uri后缀对应) 8. 完成@PathVariable的功能,调节代码结构,使用简单工厂实现每个参数注解的映射 9. 构建beanFactory IOC容器,实现基础的Autowired依赖注入功能 10. 完成@Qulifier的功能 11. 重构IOC模块实现方式,解决循环依赖 12. 完成基于jdk和cglib的aop实现 13. 重构启动方式,完成@ComponentScan ## 使用 在demo文件包中通过 @componentScan 注解扫描路径,启动即可。 默认定义的端口就是8080 ......