@RestController
@RequiredArgsConstructor
@RequestMapping("/main")
@Slf4j
public class MainRestController {
private final MainService service;
@PostMapping("/main.do")
public Map<String, Object> main() {
Map<String, Object> map = new HashMap<>();
try {
ArrayList<MainDto.Item> list = service.getItems();
map.put("Data", list);
map.put("Result", 1);
}
catch (Exception e) {
log.info("메인에러 : ", e);
map.put("Result", 0);
}
return map;
}
}
이렇게 map 에다가 Data 키를 넣어서 Vue컴포넌트에 전달하고 출력했던 것을
builder Pattern 을 이용하는 코드로 변경해보겠다.
일단
1. 반환타입을 Map<String, Obejct> 에서 MainDto 로 변경해주고
2. HashMap 객체 생성했던 것을 ArrayList 객체 생성으로 변경해준다. (난 둘 다 썼기 때문에 그냥 Map삭제나 다름없음)
Map<String, Object> map = new HashMap<>();
↓
ArrayList<MainDto.Item> list = service.getItems();
3. map.put("Data", list); 처럼 map 에 담았던 Data키 대신 builder()를 쓴다.
return MainDto.builder().result(1).data(list).build();
4. MainDto 에 @Builder 어노테이션 필요
5. MainDto 에 result, data라는 필드(멤버 변수) 필요
private int result;
private ArrayList<Item> data;
컨트롤러 코드
@RestController
@RequiredArgsConstructor
@RequestMapping("/main")
@Slf4j
public class MainRestController {
private final MainService service;
private final ListableBeanFactory listableBeanFactory;
@PostMapping("/main.do")
public MainDto main() {
try {
ArrayList<MainDto.Item> list = service.getItems();
return MainDto.builder().result(1).data(list).build();
}
catch (Exception e) {
log.info("메인에러 : ", e);
return MainDto.builder().result(0).data(null).build();
}
}
}
Vue컴포넌트에서 바꿀 것은
Data: res.data.Data || []
↓
Data: res.data.data || []
이것 뿐이다.
참고로, res.data라고 하면 안되고 res.data.data 로 써야한다고 한다..
- res는 axios 응답 전체 객체
- res.data는 백엔드가 보낸 JSON 전체
- res.data.data는 그 안에 있는 실제 데이터 리스트(Array)

'웹 개발 > [KLOZ] 웹 프로젝트' 카테고리의 다른 글
| [KLOZ] 파비콘 생성 추가 (0) | 2025.06.13 |
|---|---|
| [KLOZ] 한 행 입력~ 여러 행 입력~ 할 때 Dto와 Controller (0) | 2025.06.04 |
| spring 프로젝트 & vue 프로젝트 연동 및 .bat/.sh 설명 (2) | 2025.05.20 |
| spring boot 서버 실행할 때 나오는 텍스트 변경하기 (0) | 2025.05.20 |
| [Thymeleaf] 화면에 문자열 또는 view 띄우기 (1) | 2025.05.12 |