Go-Spring 入门篇(四)

序言

示例代码 github.com/acrossmountain/gs-demo

上章 Go-Spring 入门篇(三) 我们拆分了业务代码,将逻辑处理放到了 service 层,本章我们通过 spring-boot 提供强大的配置能力,来动态配置我们文件的存储目录。

配置文件

config/application.properties

# application
spring.application.name=demo

# file system
file.dir=temp

直接注入

services/upload/upload.go

type Service struct {
    Dir string `value:"${file.dir}"`
}

func (s *Service) PutObject(name string, r io.Reader, size int64) (string, error) {
    // out := path.Join("temp", name)
    out := path.Join(s.Dir, name)
    // ...
}

当然 spring-boot 也支持对结构体实例化配置数据和设置默认值。

通过结构体注入

config/filesystem.go

type FileSystem struct {
    Dir string `value:"${file.dir:=tmp}"`
}

services/filesystem/filesystem.go

type Service struct {
    Config config.FileSystem
}

运行

重新运行 go run main.go 并测试,功能正常。

$ curl -F "file=@./1.jpg" http://127.0.0.1:8080/upload
$ {"code":0,"data":{"url":"temp/1.jpg"},"msg":"上传文件成功"}

$ curl -F "file=@./1.jpg" http://127.0.0.1:8080/upload
$ {"code":-1,"msg":"文件已存在,请勿重复上传"}

框架相关

spring-boot 支持 propertiesyamltomlini 等多种格式的配置和方式,并默认配置从应用目录下的 config 目录中进行收集,可以通过以下两种方式来修改默认配置目录和配置类型。

SetEnv

// 通过 Property 函数设置配置目录
gs.SetEnv("GO_SPRING_CONFIG_LOCATIONS", "YOUR_CONFIG_PATH")
// 通过 Property 函数设置配置文件类型
gs.SetEnv("GS_SPRING_CONFIG_EXTENSIONS", ".properties,.prop,.yaml,.yml,.toml,.tml,.ini")

Property

// 通过 Property 函数设置配置目录
gs.Property("GO_SPRING_CONFIG_LOCATIONS", "YOUR_CONFIG_PATH")
// 通过 Property 函数设置配置文件类型
gs.Property("GS_SPRING_CONFIG_EXTENSIONS", ".properties,.prop,.yaml,.yml,.toml,.tml,.ini")

注:SetEnv 优先级高与 Property。

注:GO_SPRING_CONFIG_LOCATIONS 和 GS_SPRING_CONFIG_EXTENSIONS 为框架预定义配置键名,后续会介绍其它的预定义配置名。

官网及交流

Go-Spring 官网
Github

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!