当前位置: 首页 > news >正文

山东网站建设和游戏开发的公司增城企业网站建设

山东网站建设和游戏开发的公司,增城企业网站建设,怎样制造网站图片教程,微信指数怎么看1. wire 简介 wire 是一个 Golang 的依赖注入框架#xff08;类比 Spring 框架提供的依赖注入功能#xff09; ⭐ 官方文档#xff1a;https://github.com/google/wire 这里关乎到编程世界当中一条好用的设计原则#xff1a;A用到了B#xff0c;那么B一定是通过依赖注入的…1. wire 简介 wire 是一个 Golang 的依赖注入框架类比 Spring 框架提供的依赖注入功能 ⭐ 官方文档https://github.com/google/wire 这里关乎到编程世界当中一条好用的设计原则A用到了B那么B一定是通过依赖注入的方式提供给A的 举一个例子现在有一个 CodeService验证码服务需要调用到 SmsService短信服务来完成发送验证码的功能此时在 CodeService 内部是不知道也不应该了解如何初始化 SmsService 的那么就要求由外部传入已经构造好的 SmsService 实例 依赖注入有以下优点 依赖方与被依赖方耦合度较低可以复用公共组件比如 MySQL、Redis 等数据库连接对象测试方便扩展性良好 2. wire 安装与下载 下载 wire 对应源码包go install github.com/google/wire/cmd/wirelatest 温馨提示install 命令会自动将 wire 下载到 GOPATH 下的 bin 目录只有配置该路径环境变量才能使用 wire 命令 3. 项目基本结构 该实例项目参考 DDD 架构规范 repository领域对象的存储 dao存储到关系型数据库 service领域对象的行为业务相关web与 HTTP 请求交互db.go初始化数据库连接wire.go依赖注入代码实现main.go项目启动入口wire_gen.go依赖注入生成的文件 repository/dao/user.go package daoimport gorm.io/gormtype UserDAO struct {db *gorm.DB }func NewUserDAO(db *gorm.DB) *UserDAO {return UserDAO{db: db,} } repository/user.go package repositoryimport wire_demo/repository/daotype UserRepository struct {userDAO *dao.UserDAO }func NewUserRepository(userDAO *dao.UserDAO) *UserRepository {return UserRepository{userDAO: userDAO,} } service/user.go package serviceimport wire_demo/repositorytype UserService struct {repo *repository.UserRepository }func NewUserService(repo *repository.UserRepository) *UserService {return UserService{repo: repo,} } web/user.go package webimport (github.com/gin-gonic/ginnet/httpwire_demo/service )type UserHandler struct {userSvc *service.UserService }func NewUserHandler(userSvc *service.UserService) *UserHandler {return UserHandler{userSvc: userSvc,} }func (u *UserHandler) SayHello(ctx *gin.Context) {ctx.String(http.StatusOK, Hello,World!)return }func (u *UserHandler) RegisterRoutes(server *gin.Engine) {server.GET(/hello, u.SayHello) } db.go package mainimport (gorm.io/driver/mysqlgorm.io/gorm )func InitDB() *gorm.DB {db, err : gorm.Open(mysql.Open(root:QWEzxc123456tcp(localhost:3306)/webook))if err ! nil {panic(err)}return db } 3. wire 快速入门 步骤一在项目根目录下创建wire.go //go:build wireinjectpackage mainimport (github.com/google/wirewire_demo/repositorywire_demo/repository/daowire_demo/servicewire_demo/web )func Init() *web.UserHandler {wire.Build(InitDB,dao.NewUserDAO,repository.NewUserRepository,service.NewUserService,web.NewUserHandler,)return new(web.UserHandler) }温馨提示 在文件上方使用固定格式 //go:build wireinject 表明这是依赖注入的编译模板文件创建一个函数内部使用 wire.Build 方法传入各种构造方法wire 会自动分析依赖关系返回值无所谓wire 内部会帮你进行替换 步骤二在 wire.go 同级目录下命令行执行wire命令 此时也会发现项目同级目录出现一个wire_gen.go文件这就是编译生成的文件内部已经帮你写好了各种构造方法以及依赖之间的传递 步骤三在 main.go 文件中正常使用即可 package mainimport github.com/gin-gonic/ginfunc main() {server : gin.Default()userHandler : Init()userHandler.RegisterRoutes(server)server.Run(:8080) }
http://www.w-s-a.com/news/873011/

相关文章:

  • 网站开发制作公司罗湖在线
  • 做网站银川潍坊网络科技有限公司
  • 南宁企业网站建站模板盐田高端网站建设
  • 深圳市建设局网站张局北京档案馆网站建设
  • 运动健身型网站开发网站备案掉了什么原因
  • 网站开发的前后端是什么注册网站多少钱一年
  • 彩票网站建设需要什么网站未备案被阻断怎么做
  • wordpress 版权声明网站优化排名哪家性价比高
  • dedecms网站关键词外包做网站平台 一分钟
  • 酒网站建设游戏分类网站怎么做
  • 仿牌网站安全北京大良网站建设
  • ps中怎样做网站轮播图片吉林省网站建设公司
  • 广西网站建设-好发信息网温江做网站哪家好
  • 网站建设属于什么职位类别南京哪个网站建设比较好
  • wdcp 网站备份东莞网站建设五金建材
  • 天津制作网站的公司电话wordpress架设进出销
  • tomcat做静态网站prestashop和wordpress
  • 上海响应式建站wap网站微信分享代码
  • 四川建筑人才招聘网南昌网站优化
  • 南充网站建设制作重庆有的设计网站大全
  • 深圳沙井做网站公司网站搭建谷歌seo
  • 学校资源网站的建设方案山西省住房城乡建设厅网站
  • 医疗行业网站建设深圳网络科技公司排名
  • 企业形象型网站建设wordpress chess
  • 网站的域名起什么好处罗湖网站建设公司乐云seo
  • 网站的服务器在哪里sem推广软件选哪家
  • 科技网站欣赏婚庆公司经营范围
  • 网站后台管理系统php校园网站建设意见表填写
  • 网站建设问题调查常州百度推广代理公司
  • net网站开发学习谷歌优化培训