使用项目创建一个带web端和 grpc 服务的。 使用 wire 进行依赖注入。
kratos 的官方网站是:
https://go-kratos.dev/blog/go-project-wire
使用之后,这个是和 java 的spring 依赖注入最大的区别的地方。 开始没有太明白,后来才发现确实是非常的好用。
要突破 java 的那种思维,去找 xml 进行配置。也不用 autowired resource 那样去注解。
需要在每层上面都加上 ProviderSet,然后把 构造对象加入进去。 很魔幻的就把代码给生成了。
需要注意的是,kratos 在使用 wire 的 make 老是报错,后来直接用 go install 把 wire 命令编译好,就方便多了。
学习 wire 确实非常让人费解,需要花时间去理解 google 大神的精华。 理解好了就非常方便了,不是在go中找 spring 框架的影子,而是适合golang 的kratos框架,意义类似。
https://go-kratos.dev/docs/guide/ent
这个也是超乎想象,是需要生成一大堆文件夹的代码然后再使用的。 开始以为放错地方了。后来才知道原理就是这样依赖的。 这个学习接受起来更麻烦,考虑再三,还是老实用个简单 GORM 做数据库持久层吧。
https://github.com/go-gorm/gorm
https://gorm.io/zh_CN/docs/index.html
博客例子:
https://github.com/go-kratos/examples/tree/main/blog
啤酒店例子:
https://github.com/go-kratos/beer-shop
kratos 框架还有官方的学习视频,非常的不错。
Kratos入门实战 01:项目创建和介绍
Kratos入门实战 02:API定义与生成
Kratos入门实战 03:数据库接入与配置修改
Kratos入门实战 04:项目结构和依赖注入
Kratos入门实战 05:biz层开发和中间件简介
Kratos入门实战 06:自定义中间件
Kratos入门实战 07:CORS和HTTP中间件自定义
Kratos入门实战 08:HTTP错误返回结构自定义
Kratos入门实战 09:data层开发
Kratos入门实战 10:错误处理
kratos 是非常不错的框架,而且是国人开发的微服务全栈框架。
减少了大家使用golang 去选择的难度。
而且是直接从B站的生产系统上衍生出来的框架技术。
有相关多的实战经验设计在里面,随着国内的企业越来越多的使用golang 进行开发。
这个非常好的框架会得到很好的普及,同时反向回馈 kratos 框架。形成良性循环。
类似于 java spring cloud 中的地位,降低了学习门槛。