@Schema(description = "응답 메시지", example = """
            data: {
                "aDomain": { // 단수명사는 object 형태로 반환
                    ...
                },`
                "bDomains": [ // 복수명사는 array 형태로 반환
                    ...
                ]
            }
            """)
    private T data;

    @Builder
    private SuccessResponse(T data) {
        this.data = data;
    }

    /**
     * data : { "key" : data } 형태의 성공 응답을 반환한다.
     * <br/>
     * 명시적으로 key의 이름을 지정하기 위해 사용한다.
     */
    public static <V> SuccessResponse<Map<String, V>> from(String key, V data) {
        return SuccessResponse.<Map<String, V>>builder()
                .data(Map.of(key, data))
                .build();
    }
@Test
    @DisplayName("SuccessResponse.from() - DTO를 통한 성공 응답")
    public void successResponseFromDto() {
        // When
        SuccessResponse<TestDto> response = SuccessResponse.from(dto);

        // Then
        assertEquals("2000", response.getCode());
        assertEquals(dto, response.getData());
        System.out.println(response);
    }