Go 언어를 위한 Spring Boot 스타일 유틸리티 라이브러리입니다.
MantyBoot은 Spring Boot의 편리한 기능들을 Go에서 사용할 수 있도록 만든 라이브러리입니다. 설정 관리, 데이터 접근 에러 처리, HTTP 유틸리티 등의 기능을 제공합니다.
| 모듈 | 설명 | 설치 |
|---|---|---|
| configuration | Spring Boot의 ConfigurationProperties 스타일 YAML 설정 관리 | go get github.com/zbum/mantyboot/configuration |
| data | 데이터베이스 에러 추상화 및 번역 | go get github.com/zbum/mantyboot/data |
| http | HTTP 요청 처리 유틸리티 | go get github.com/zbum/mantyboot/http |
- Go 1.22 이상
go get github.com/zbum/mantyboot
Spring Boot의 ConfigurationProperties와 유사한 YAML 설정 관리 모듈입니다.
go get github.com/zbum/mantyboot/configuration
다음 순서로 설정 파일을 찾아 로드합니다. 나중에 로드된 값이 이전 값을 덮어씁니다.
- embed.FS (임베딩된 파일)
./application-{profile}.yaml./config/application-{profile}.yaml
디렉토리 구조:
.
├── application-dev.yaml
├── config
│ └── application-dev.yaml
└── example
├── main.go
└── embed
└── application-dev.yaml
package main import ( "embed" "fmt" "github.com/zbum/mantyboot/configuration" ) type ExampleConfiguration struct { ServerName string `yaml:"server-name"` ServerPort string `yaml:"server-port"` } //go:embed embed/application-dev.yaml var devfs embed.FS func main() { config, err := configuration.NewConfiguration[ExampleConfiguration](devfs, "dev") if err != nil { return } fmt.Println(config.GetConfiguration()) }
데이터베이스 에러를 추상화하여 처리하는 모듈입니다.
go get github.com/zbum/mantyboot/data
MySQL 에러 코드를 의미 있는 에러 타입으로 변환합니다.
| 에러 코드 | 에러 타입 | 설명 |
|---|---|---|
| 1062 | DuplicateKeyError |
중복 키 에러 |
| 1452 | FkConstraintError |
외래 키 제약 조건 위반 |
package main import ( "github.com/zbum/mantyboot/data/mysql" ) func main() { translator := mysql.MysqlErrorTranslator{} // DB 작업 수행 err := someDBOperation() // 에러 변환 dataAccessErr := translator.TranslateExceptionIfPossible(err) switch dataAccessErr.(type) { case mysql.DuplicateKeyError: // 중복 키 처리 case mysql.FkConstraintError: // FK 제약 조건 위반 처리 } }
HTTP 요청 처리를 위한 유틸리티 모듈입니다.
go get github.com/zbum/mantyboot/http
HTTP 요청에서 파라미터를 쉽게 추출할 수 있습니다.
package main import ( "net/http" mantyhttp "github.com/zbum/mantyboot/http" ) func handler(w http.ResponseWriter, r *http.Request) { wrapper := mantyhttp.NewRequestWrapper(r) // Query String 또는 POST Form에서 int64 파라미터 추출 id, err := wrapper.ParamInt64("id") if err != nil { // 에러 처리 } // 다른 정수 타입도 지원 count, _ := wrapper.ParamInt32("count") page, _ := wrapper.ParseInt("page") }
문자열을 다양한 정수 타입으로 변환하는 제네릭 함수입니다.
import mantyhttp "github.com/zbum/mantyboot/http" // int64로 변환 val, err := mantyhttp.Parse[int64]("12345") // int32로 변환 val32, err := mantyhttp.Parse[int32]("123")
일반적으로 사용되는 Content-Type 값들을 상수로 제공합니다.
import "github.com/zbum/mantyboot/http/mime" // 사용 예시 contentType := mime.ContentTypeApplicationJson // "application/json" formType := mime.ContentTypeApplicationFormUrlencoded // "application/x-www-form-urlencoded"
지원하는 MIME 타입:
application/jsonapplication/xmlapplication/x-www-form-urlencodedmultipart/form-datatext/htmltext/plain- 기타 다수
Apache License 2.0
자세한 내용은 LICENSE 파일을 참조하세요.