AthenHub 서비스 전반에서 반복적으로 등장하는 에러 처리, 메시지 번역, 공통 응답 포맷, MVC 설정, 유틸리티 기능을 하나의 플랫폼으로 통합하기 위해 설계된 멀티모듈 기반 공통 라이브러리입니다.
- 서비스 전반의 표준화와 일관성 확보
- 반복되는 설정 및 공통 기능 제거 → 개발 생산성 향상
- 공통 기능을 중앙 관리 → 변경 영향 최소화
- 서비스의 비즈니스 로직만 남도록 하는 관심사 분리(Separation of Concerns)
common/
├── common-core
├── common-mvc
└── common-util
- 역할과 책임(Responsibility)의 명확한 분리
- 단일 모듈에서는 MVC, 유틸, 에러 규칙이 혼재되어 유지보수와 확장이 어려움.
- 모듈 분리를 통해 SRP(Single Responsibility Principle)를 지키고 책임을 명확히 분리.
- 불필요한 의존성 제거 및 서비스 경량화
- MVC 기능이 필요한 서비스만 common-mvc를 의존하도록 설정하여
- 배치 서비스, 내부 모듈, 테스트 환경 등에서는 core/util만 가져가도록 최적화.
- 변경 영향(Impact) 최소화
- core 변경 → mvc/util 영향 없음
- mvc 변경 → core 영향 없음
- 작은 수정이 전체에 영향 주지 않도록 설계.
- CI/CD 속도 및 빌드 효율성 증가
- Gradle 멀티모듈 캐싱 → “변경된 모듈만 빌드” 가능
- 서비스 확장성을 고려한 설계
- 추후 common-webflux, common-kafka 등 새로운 공통 모듈 추가가 용이한 구조.
전사 공통 규칙을 정의하는 가장 기본적인 레이어
Spring, MVC 등 프레임워크에 전혀 의존하지 않고
AthenHub 서비스에서 반드시 일관되게 사용해야 하는
표준 규격·에러 모델·Value Object 등을 담고 있습니다.
GlobalErrorCode— 전사 공통 에러 코드 정의ApplicationException— HTTP 상태/메시지/코드 기반 에러 추상화- 순수 Java 기반 모델, Value Object, 인터페이스 제공
- 프레임워크 독립
- 가장 낮은 레벨의 모듈
- MVC/Util/각 도메인 서비스에서 공통으로 참조
Spring MVC 환경에서 필요로 하는 공통 기능을 자동화
Spring Boot 기반 서비스에서 반복되는 설정을 자동으로 등록하여 서비스 개발자가 비즈니스 로직에 집중할 수 있도록 돕습니다.
- Global Exception Handler 자동 등록
- MessageResolver 및 i18n 메시지 처리
- SpringDoc 기반 SwaggerConfig 자동 제공
- Spring Boot AutoConfiguration 사용
- MVC 설정을 공통화하여 중복 제거
- framework-specific 설정은 모두 mvc 모듈에서 처리
- service는 Controller/Service 로직에만 집중하게 함
다양한 서비스에서 재사용 가능한 일반 유틸 기능 제공
프레임워크와 무관한 순수 Java 유틸리티 기능을 제공하여 서비스별 중복 코드를 제거합니다.
- 문자열 유틸 / 날짜 유틸
- Converter / Format 유틸
- 순수 Java 코드만 배치
- core/mvc/각 서비스 어디서든 참조 가능
- 범용적이고 안정적인 로직 제공
AthenHub 공통 모듈은 다음을 목표로 합니다:
- 전사 기술 표준화
- 서비스 간 일관성 확보
- 비즈니스 코드와 환경 설정의 완전한 분리
- 유지보수 효율 극대화
본 문서는 athenhub/common 라이브러리를 Gradle 기반 프로젝트에서 설정 방법을 정리한 가이드입니다.
GitHub Packages 저장소를 활용하므로, 필요한 GitHub Token 발급 및 gradle.properties 설정 방법도 함께 안내합니다.
프로젝트의 build.gradle 또는 build.gradle.kts에 아래 저장소(repository)를 추가하세요.
repositories {
mavenCentral()
maven {
name = "GitHubPublicPackages"
url = uri("https://maven.pkg.github.com/athenhub/common")
credentials {
username = project.findProperty("gpr.user") ?: System.getenv("GITHUB_ACTOR")
password = project.findProperty("gpr.key") ?: System.getenv("GITHUB_TOKEN")
}
}
}💡 GitHub Packages는 인증 정보가 필요하므로 credentials 설정이 반드시 필요합니다.
build.gradle에 다음과 같이 라이브러리 의존성을 등록하세요.- 내 서비스에 필요한 의존성만 등록 할 수 있습니다.
dependencies {
implementation 'com.athenhub:common-core:{version}'
implementation 'com.athenhub:common-util:{version}'
implementation 'com.athenhub:common-mvc:{version}'
}최신 버전은 아래 GitHub Packages 페이지에서 확인할 수 있습니다.
👉 https://github.com/athenhub/common/packages
프로젝트 루트에 gradle.properties 파일을 생성하고, GitHub 인증 정보를 입력합니다.
gpr.user=깃허브ID
gpr.key=깃허브TOKEN🔑 GitHub Token 발급 팁
- GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
- read:packages 권한만 있으면 충분합니다.
위의 과정을 모두 완료하면 athenhub/common 라이브러리를 정상적으로 가져와 프로젝트에서 사용할 수 있습니다.