〔微笑〕:人生充满着期待,梦想连接着未来。 大家好,我是码农的炉灶社,今天给大家推荐一款开源国产IOC框架:CoodyFramework。基本介绍: 一名野生的民间技术爱好者,早期活跃于各网络安全论坛,而后由白帽转战编程。因谋生于14年3月就职于CMGE。 在从业生涯中,本项目自2018年发布后,后续更新也是改改停停,这些年JDK已经更新了N多个版本,而本框架至今未发布正式版。 自古闲人出金货,也许有一天笔者自由了,会回过头来完善这套框架。 目前本项目存在如下挑战: 1、Java9之后屏蔽了unsafe,会使得底层框架对创建对象场景性能下降 2、Java9之后反射技术部分操作空间被阉割,需要针对阉割部分进行调整 3、需兼容javax,无缝兼容各种模板引擎、各种应用服务器 4、Csonjson序列化反序列化插件,需修复特定场景下兼容性问题前言:CoodyFramework是由笔者业余时间编写的一套Ioc框架。由最初立项到发布jar到Maven中央仓库。历时4个月有余。用途与优势:CoodyFramework框架包含以下模块coodycore:框架核心包,包括IocAop的实现,包括相关工具和超类coodyweb:框架webmvc的实现包,实现了mvc功能体系coodycache:框架缓存的实现,实现了基础缓存,切面缓存,并提供相关切面技术的支持coodyjdbc:框架orm的实现,实现了基于mysql下基础操作的封装,实现了各种简易操作,拓展了切面事务coodytask:框架定时任务的实现,基于cron实现了定时任务,提供了注解定时任务的支持coodyrcc:框架分布式的实现,提供注册中心、序列化、通信协议等接口。字节码创建子类的实现(分布式功能未完成)coodyelock:框架分布式锁的实现,通过redis订阅实现的高性能分布式锁coodymail:基于TCP的邮件发送工具coodyminicat:基于TCP的Http服务器coodycson:JSON序列化反序列化插件coodyesource:简易数据库连接池coodylogged:轻量化ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a插件更新记录:20180224:立项,提供IOCAOP框架20180225:提供WebMVC框架20180226:提供ORM框架20180308:拓展IOC对Interface的支持20180310:提供CRON定时器插件,并提供CronTask注解20180321:拓展AOP,提供类通配、方法通配、提供多注解规则20180422:提供request和response在controller中进行注入20180423:拓展MVC参数适配器,并提供自定义参数适配入口20180602:拓展分布式框架,并制定分布式解决方案,提供ASM创建实现类,通讯、序列化、注册中心等接口20180605:对项目进行拆分,为发布maven中央仓库做准备20180628:发布Alpha至Maven中央仓库。nexus搜索Coody即可20181231:提供Elock,用于分布式加锁,发行alpha1。2。4版本20191126:提供Mail,用于邮件发送,发行alpha1。2。5版本20191227:提供Minicat,实现HTTP应用服务器,并发行alpha1。2。6版本20200104:提供Cson,实现Json序列化反序列化插件20200114:剔除cglib依赖,改为纯asm实现动态代理20221003:编写并调通RCC分布式模块20221009:编写loggedahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a插件,剔除log4jCoodyFrameworkMinicat实战项目:https:gitee。comcoodyerreduce 引用地址:dependencygroupIdorg。coody。frameworkgroupIdcoodycoreartifactIdversionalpha1。8。4versiondependencydependencygroupIdorg。coody。frameworkgroupIdcoodyjdbcartifactIdversionalpha1。8。4versiondependencydependencygroupIdorg。coody。frameworkgroupIdcoodycacheartifactIdversionalpha1。8。4versiondependencydependencygroupIdorg。coody。frameworkgroupIdcoodytaskartifactIdversionalpha1。8。4versiondependencydependencygroupIdorg。coody。frameworkgroupIdcoodywebartifactIdversionalpha1。8。4versiondependencydependencygroupIdorg。coody。frameworkgroupIdcoodyelockartifactIdversionalpha1。8。4versiondependencydependencygroupIdorg。coody。frameworkgroupIdcoodyminicatartifactIdversionalpha1。8。4versiondependencydependencygroupIdorg。coody。frameworkgroupIdcoodymailartifactIdversionalpha1。8。4versiondependencydependencygroupIdorg。coody。frameworkgroupIdcoodycsonartifactIdversionalpha1。8。4versiondependency 1。功能说明:CoodyFramewrok实现了:IOC依赖注入、AOP切面、MVC、定时任务、切面缓存、ORM等功能,分布式Rcc模块也已进入研发阶段。2。环境说明:JDK1。8gpg4win2。3。1(windows上编译需要安装本环境)3。基本示例:(1)、实例化一个Bean: 实例化一个bean只需要在一个Class标明AutoBuild注解即可(2)、注入Bean到一个类字段: 注入Bean到字段,只需要在该字段上面标明AutoBuild注解(3)、web。xml配置:!初始化加载配置文件目录contextparamparamnameconfigPathparamnameparamvalueconfigparamvaluecontextparam!监听器listenerlistenerclassorg。coody。framework。web。listen。CoodyServletListenlistenerclasslistener!mvc路由器servletservletnameDispatServletservletnameservletclassorg。coody。framework。web。DispatServletservletclass!静态资源目录initparamparamnameviewPathparamnameparamvalueparamvalueinitparamservlet!mvc拦截规则servletmappingservletnameDispatServletservletnameurlpattern。dourlpatternservletmapping(4)、配置一个bean: 配置dataConfig(coody。bean。{bean名称}。field。{字段名})coody。bean。hikariDataConfig。classcom。zaxxer。hikari。HikariConfigcoody。bean。hikariDataConfig。field。driverClassNamecom。mysql。jdbc。Drivercoody。bean。hikariDataConfig。field。jdbcUrljdbc:mysql:127。0。0。1czone?useUnicodetruecharacterEncodingutf8coody。bean。hikariDataConfig。field。usernamerootcoody。bean。hikariDataConfig。field。passwordrootcoody。bean。hikariDataConfig。field。maxPoolSize64coody。bean。hikariDataConfig。field。minIdle8 配置DataSource(coody。bean。{bean名称}。parament。参数名),当值为参数名),当值为{表达式},即{bean名称}coody。bean。hikariDataSource。classcom。zaxxer。hikari。HikariDataSourcecoody。bean。hikariDataSource。parament。configuration{hikariDataConfig} 注意:表达式coody。bean。{bean名称}。方式。{参数名}中。当方式为field的时候,代表通过设置参数值初始化Bean,field的值与字段名一致;当方式为parament的时候,代表通过构造函数初始化Bean。parament的值与参数名一致。 如图: (5)、Mvc的使用:简易使用 参数适配器 系统提供的参数装载器位于org。coody。framework。web。adapt包下FormMealAdapt:混合装载适配器,form表单装载到多个bean,平级装载,字段名谁有谁得。FormNomalAdapt:混合装载适配器,form表单装载到多个bean,以方法参数名为请求参数前缀。GeneralAdapt:简易装载适配器,装载request、response、session等参数。JsonMealAdapt:混合装载适配器,json数据混合装载到bean,平级装载,字段名谁有谁得。JsonNomalAdapt:混合装载适配器,json数据装载到多个bean,以方法参数名为请求参数前缀。(6)、定时任务的使用: (7)、切面的使用: (8)、事务的使用: (9)、缓存的使用: 缓存使用请参考具体文档4。各插件具体文档: CoodyWeb(MVC说明文档) CoodyCache(缓存插件说明文档) CoodyJdbc(ORM说明文档) CoodyTask(CRON定时任务说明文档) CoodyElock(分布式锁说明文档) CoodyMinicat(HTTP服务器说明文档) CoodyMail(TCP邮件插件说明文档) CoodyESource(数据库连接池说明文档) CoodyCson(JSON序列化反序列化插件说明文档) CoodyRCC(分布式框架) CoodyLogged(日志插件)结束语: 比较良心的作者,代码质量良好,可作为源码研究,对快速提高编程能力很有帮助哦! 开源分享不易,感谢大家的支持。后续也会分享更多的干货和技术资讯,您的阅读就是对小编的支持,再次感谢各位老铁! 开源地址:https:gitee。comcoodyerCoodyFramework