배경
#232 에서 MessageTemplate 엔티티와 DB 우선 MessageSource가 구현된 후, 관리자가 메시지를 조회·수정·초기화할 수 있는 REST API 필요.
구현 내용
엔드포인트
| 메서드 |
경로 |
설명 |
GET |
/api/admin/messages |
전체 키 목록 + 현재 값(DB 오버라이드 or 기본값) 조회 |
PATCH |
/api/admin/messages/{key} |
특정 키 값을 DB에 저장(오버라이드) |
DELETE |
/api/admin/messages/{key} |
오버라이드 삭제 → 기본값(properties) 복원 |
Response 구조 (GET)
[
{
"key": "notification.expired.dm",
"defaultValue": "안녕하세요 {0}님, 요청하신 GPU 서버 사용 기간이 만료되어 리소스가 정리되었습니다.",
"currentValue": "커스텀 값 (DB 오버라이드 시)",
"isOverridden": true
}
]
구현 파일
domain/messageTemplate/
controller/AdminMessageTemplateController.java
service/MessageTemplateService.java
dto/MessageTemplateResponseDto.java
dto/MessageTemplateUpdateRequestDto.java
기술 포인트
messages.properties 기본값 읽기: @Value("classpath:messages.properties") + PropertiesLoaderUtils.loadProperties()
- 주석(#) 라인 제외, 키-값 파싱 후 DB 오버라이드와 머지
- 권한:
ADMIN 롤만 접근 가능 (SecurityConfig 경로 허용 추가 필요)
의존
관련 이슈
배경
#232 에서
MessageTemplate엔티티와 DB 우선MessageSource가 구현된 후, 관리자가 메시지를 조회·수정·초기화할 수 있는 REST API 필요.구현 내용
엔드포인트
GET/api/admin/messagesPATCH/api/admin/messages/{key}DELETE/api/admin/messages/{key}Response 구조 (GET)
[ { "key": "notification.expired.dm", "defaultValue": "안녕하세요 {0}님, 요청하신 GPU 서버 사용 기간이 만료되어 리소스가 정리되었습니다.", "currentValue": "커스텀 값 (DB 오버라이드 시)", "isOverridden": true } ]구현 파일
기술 포인트
messages.properties기본값 읽기:@Value("classpath:messages.properties")+PropertiesLoaderUtils.loadProperties()ADMIN롤만 접근 가능 (SecurityConfig경로 허용 추가 필요)의존
관련 이슈