# booting-go **Repository Path**: kristas/booting-go ## Basic Information - **Project Name**: booting-go - **Description**: 基于SpringBoot框架思想实现的Golang即开即用插件化框架。 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 3 - **Created**: 2021-02-25 - **Last Updated**: 2024-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # booting-go ## Intro 基于SpringBoot框架思想实现的Golang即开即用插件化框架。 ## Function - DI 依赖注入:将结构体的构造过程托管给框架,可按名称、类型、接口类型甚至接口切片类型进行注入。 - 多环境配置:yaml格式配置文件,多配置文件按优先级覆盖 - 配置注入:配置文件自动注入,更有AutoConfigure接口 - 更结构化的web模块: - 将路由`url`写在`TAG`中的全新体验 - 像Spring Web一样自动注入请求的变量 - 自动生成Swagger接口文档 - 主流web框架仅需简单编写driver即可自由切换且无需修改代码,已实现Iris、Echo及Gin的扩展 - 类似Java Servlet的Filter功能,可对请求进行前置后置处理 - 更结构化的data模块: - 可自定义的数据源配置,轻松实现多数据源 - 一行配置实现SSH连接数据库功能 - 默认使用go原生DB实现,各种orm轻松扩展,已实现Gorm的扩展 - Flyway数据库版本控制 - 插件化数据库支持,默认提供mysql实现 - 插件化的cache模块: - 默认提供map缓存和redis缓存实现 - 一行配置即可切换缓存实现 - 插件化的log模块: - 日志工厂设计,可轻松自定义日志实现 - 默认提供logrus日志框架实现 - 一行配置轻松切换 - security模块:集成Casbin权限认证模块 ## QuickStart ### 搭建项目 #### 创建项目 创建目录 booting-go-demo 使用Goland打开项目或在控制台中启用go module 设置proxy代理: - Goland:File->Settings->Go->Go Modules->Environment: `GOPROXY=https://goproxy.cn` - Console:`set GOPROXY=https://goproxy.cn` 初始化项目: ```sh go mod init booting-go-demo ``` 创建`main.go` ```go package main import ( "gitee.com/kristas/booting-go/framework" ) func main() { framework.Application().Run() } ``` 向生成的go.mod文件中添加: ```properties require gitee.com/kristas/booting-go v1.3.2 ``` 下载依赖: ```sh go mod tidy ``` #### 创建配置文件 创建基础配置文件`config.yml` ```yaml application: app_name: booting-go-demo logging: instance: logrus time_format: "2006-01-02 15:04:05" web: charset: UTF-8 iris: FireMethodNotAllowed: true DisableBodyConsumptionOnUnmarshal: true TimeFormat: "2006-01-02 15:04:05" Charset: UTF-8 EnableOptimizations: true logrus: skip_index: 4 ``` 创建`local`环境配置文件`config-local.yml` ```yaml server: port: 8083 application: logging: level: trace # panic, fatal, error, warn(warning), info, debug, trace ``` 创建`prod`环境配置文件`config-prod.yml` ```yaml server: port: 8080 application: logging: level: trace ``` 至此项目初始化完成。 ### 搭建基础模块 #### Controller 创建controller目录 创建`hello_controller.go` ```go package controller import ( "gitee.com/kristas/booting-go/framework" "gitee.com/kristas/booting-go/framework/core/bean" "gitee.com/kristas/booting-go/framework/web" ) func init() { framework.Component(new(HelloController)) } type HelloController struct { bean.Component hello web.Rest `GET:"/hello"` AppName string `value:"application.app_name"` } func (r *HelloController) Group() string { return "/api/v1" } func (r *HelloController) Hello() string { return r.AppName } ``` #### Config 创建config目录 创建`init.go` ```go package config import ( _ "booting-go-demo/controller" //初始化controller "gitee.com/kristas/booting-go/framework" "gitee.com/kristas/booting-go/framework/core/bean" "gitee.com/kristas/booting-go/plugin/iris_restful_plugin/iris_container" ) func init() { framework.Component(components...) } var components = bean.Components{ new(iris_container.Starter), //使用iris作为web容器 } ``` #### Main 向`main.go`中引入Config ```go package main import ( _ "booting-go-demo/config" //引入config,使初始化链生效 "gitee.com/kristas/booting-go/framework" ) func main() { framework.Application().Run() } ``` #### Start 启动项目 ```sh go run main.go ``` 现在打开浏览器输入 http://localhost:8083/api/v1/hello 即可看到 "booting-go-demo" 至此已成功搭建booting-go框架项目,更多功能请继续往下看。