/pangu

盘古,一个受SpringBoot的启发而创建Golang应用程序快速开发框架,尽量让使用者关注业务而不是底层框架;同时,尽量添加一些华丽而且实用的功能来方便开发者的使用。支持的功能有:1、类Springboot高生产力开发框架;2、配置文件无缝切换(支持JSON、YAML、TOML、XML以及环境变量支持和默认值配置支持);3、丰富的插件支持(Web、Http Client、MQTT、Redis、gRPC等一系统生产力集合框架);4、线程安全;5、高度可配置;以及其它一系统旨在提高生产力的功能集合

Primary LanguageGoApache License 2.0Apache-2.0

盘古 Golang应用程序框架

编译状态 Golang质量 版本 仓库大小 最后提交 授权协议 语言个数 最佳语言 星星个数

一个Golang应用程序快速开发框架,有以下特性

  • 快速开发
  • 内置配置文件加载
    • Json/Jsonc/Json5
    • XML
    • 其它
      • YAML,通过引入github.com/pangum/yaml支持
      • TOML,通过引入github.com/pangum/toml支持
      • 携程Apollo,通过引入github.com/pangum/apollo支持
      • 阿里Nacos,通过引入github.com/pangum/nacos支持
    • 很方便定制自己的配置文件加载器
    • 零配置,可完全通过环境变量完成配置
    • 支持配置文件覆盖
    • 支持按模块划分配置文件,比如可以按如下模式划分配置文件
      • application.json/jsonc/xml/toml/yaml/yml,提供应用程序本身需要的相关配置
      • logging.json/jsonc/xml/toml/yaml/yml,提供日志相关配置
      • database.json/jsonc/xml/toml/yaml/yml,提供数据库相关配置
      • grpc.json/jsonc/xml/toml/yaml/yml,提供gRPC相关配置
      • ...其它配置文件
      • 所有配置文件格式可以混用,比如配置可以是jsonjsoncjson5yamlymltoml等任意格式,只要正确的引入了相应的加载器
    • 支持个性化配置文件编写,对于任何一个配置字段,可以有如下形式(比如配置项是logggingLevel
      • 原始配置项loggingLevel
      • 下划线形式logging_level
      • 中划线形式logging-level
  • 内置强大的数据验证
    • 内置强大的且非常多的数据验证器
    • 很方便的定制自己的数据验证器
  • 强大的扩展功能
  • 强大的配置功能
    • 徽标
    • 帮助信息
    • 命令行
    • 一切可配置点皆可配置
  • 线程安全
  • 内置依赖注入
  • 语义化
    • 方便使用
    • 多态行为,同一个调用在不同的场景下有不同的意义

快速开始

Pangu使用非常简单,只需要定义两部分代码启动方法启动器以及依赖关系,对于依赖关系

  • 可以没有依赖,如果没有,就不需要处理依赖
  • 一般稍微大型一点的系统都会有复杂的依赖关系,而这正是盘古框架的强项
  • 对于没有依赖或者依赖非常少的项目,使用盘古反而会使代码变多,这个需要大家酌情考虑

启动方法代码如下

package main

import (
    `github.com/pangum/pangu`
    `github.com/pangum/pangum`
)

func main() {
    panic(pangu.New(
        pangu.Named(`ziyunix`),
        pangu.Banner(`Ziyunix Server`, pangu.BannerTypeAscii),
    ).Run(newBootstrap))
}

启动器的代码如下

package main

type bootstrap struct {
    application *pangu.Application
}

func newBootstrap(application *pangu.Application) pangu.Bootstrap {
    return &bootstrap{
        application: application,
    }
}

依赖关系建议像如下处理

package rest

import (
	`github.com/pangum/pangu`
)

type Server struct {}

func newServer(/* 如果有依赖,可以在这里增加依赖:api *Api */) *Server {
	return new(Server)
}

func init() {
	pangu.New().Dependencies(
		newServer,
		// 其它依赖
		// ...
	)
}

Pangu有非常多的配置项,请参看使用文档

文档

点击这里查看最新文档

使用示例

点击这里查看最新的代码示例

项目实践

交流

微信群

捐助

支持宝 微信

感谢Jetbrains

本项目通过Jetbrains开源许可IDE编写源代码,特此感谢 Jetbrains图标