반응형
- 공통메뉴 만들기
- EmotionEntity 메뉴 완성하기
@RestController
public class PostController {
private final PostService postService;
@GetMapping("/community")
public String communityList(Model model) {
List<Post> postList = postService.getAllPosts();
model.addAttribute("activePage", "community");
model.addAttribute("postList", postList);
return "community";
}
}
=> 이렇게 하면 빈화면에 community만 뜨고 페이지 이동을 하지 않는다.
✅ @Controller vs @RestController 차이 핵심 요약
어노테이션언제 사용?반환값은?주로 쓰는 곳
@Controller | HTML 페이지를 리턴할 때 | Thymeleaf 등의 템플릿 이름 | 웹 애플리케이션 (뷰 있는 화면) |
@RestController | JSON 데이터를 리턴할 때 | 문자열, 객체 → JSON | API 서버, 프론트엔드와 분리된 백엔드 |
🧠 개념 정리
🔹 @Controller
- Spring MVC 전통적인 웹 컨트롤러
- 리턴값은 보통 HTML 파일 이름 ("home", "community")
- Thymeleaf 같은 템플릿 엔진이 렌더링함
🔹 @RestController
- @Controller + @ResponseBody 를 합친 것!
- 리턴값은 JSON, 문자열 그대로 클라이언트에 전달됨
- Vue, React 같은 SPA 프론트엔드와 연동할 때 자주 씀
📌 실무 팁
- Thymeleaf 기반 웹 앱 → @Controller
- 모바일 앱 / Vue / React 프론트 연결하는 백엔드 API → @RestController
🎯 결론
| 너처럼 화면에 메뉴랑 페이지 나오게 하려면? 👉 @Controller
| JSON 응답을 주는 API 만들고 싶으면? 👉 @RestController
- Emotion Entity 완성하기
EmotionEntry.java 설명
@PrePersist
public void onCreate() {
this.createdAt = LocalDateTime.now();
}
이거는 JPA가 실제로 insert 하기 전에 자동으로 createdAt을 채워주는 방식인데,
조건이 있어!!
EntityManager가 관리하는 Entity여야만 @PrePersist가 실행됨
즉, EmotionEntry를 new로 만들었는데 뭔가 프록시 객체로 안 인식되면 무시될 수도 있음.
- Emotion calendar 완성하기
: 감정기록을 JSON으로 바꾸는 API 작업을 왜 하는가? ✅ FullCalendar가 JSON 데이터(이벤트 형식) 를 필요로 하기 때문.
🎯 그래서 우리가 하려는 건?
1. EmotionEntry 테이블에 저장된 데이터를
2. FullCalendar가 인식할 수 있는 JSON 형식으로 바꿔서
3. /api/emotions 같은 경로로 내려주기
✨ 이렇게 바꿔주면 됨:
const res = await fetch('/api/emotion-entries');
👉 /api/emotion-entries ✅ ← 이게 emotion_entry 테이블에서 감정 데이터를 JSON으로 내려주는 API!
👉 EmotionEntryApiController 만들기
- 감정 등록 수정 완
반응형
'포트폴리오 만들기 > spring boot, jpa emo 기록하기' 카테고리의 다른 글
12일차 (0) | 2025.04.23 |
---|---|
11일차 메뉴 및 UI 수정, 게시글 수정 및 삭제 (0) | 2025.04.23 |
7, 8, 9일차 (0) | 2025.04.20 |
6일차 (0) | 2025.04.19 |
4, 5일차 (1) | 2025.04.19 |