어차피 또 보게 되어있으니 한번에 이해하려고 하지 말고, 인강을 많이 보려 하지 말고 일단 따라할것.
쿼리공부는 아무튼 하면 좋다.
강의를 보면서 클론을 하고, 클론한걸 토대로 프로젝트를 해봐라. 그러다 프로젝트에서 모르겠는 부분이 발생하면 그때 다시 강의를 봐라.
그러려면 진도를 빨리 나가야 한다. 적어도 하루는 스스로의 코드나 공부방향, 속도 등을 분석을 할 시간이 필요하다. 그렇게 어떻게든 어영부영이라도 과제를 해놓고 나면 머리에 뭔가 남는게 있을 것이다.
지금이야 값이 2개지만 나중에 클라이언트에서 보내는 값이 많아진다면?
그걸 일일이 RequestParam 형식으로 보내줄 수 없기 때문에 스프링에서는 객체형식으로 받는 방법이 있다.
-> 왜 RequestParam 못쓰냐면 쟈료형이랑 변수명 일일이 다 쳐줘야 하기 때문.
@PostMapping("/form/model")
@ResponseBody
public String helloRequestBodyForm(@ModelAttribute Star star) {
return String.format("Hello, @RequestBody.<br> (name = %s, age = %d) ", star.name, star.age);
}
여기 보면 public String helloRequestBodyForm(@ModelAttribute Star star) 라고 되어 있는데,
@ModelAttribute는 지우고 그냥 Star star만 남겨도 되지만,
Star.java 안에는 @Setter가 꼭 들어가있어야 한다.
package com.sparta.springmvc;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter // Setter 여깄다!
@AllArgsConstructor
public class Star {
String name;
int age;
}
이거 보면 Star 쪽에 @Setter가 들어가있다. @ModelAttribute 쓰려면 @Setter 필수!
값이 JSON 형태로 넘어오면 괄호안에 @RequestBody 를 붙여서 받으면 된다.
결론 : 클라이언트에서 보내는 키값과 서버에서 받는 필드값을 정확히 일치시키자.
= 프론트랑 키값을 모두 통일, 정확히 일치시켜야 한다!
@Transactional(readOnly = true) 썼더니 readOnly 쪽에 빨간줄이 뜨면서 안 먹히는데요?
-> 이거 Transactional에 빨간줄 쳐지면서 import 할때, springboot 꺼가 아니라 javax Transactional import 해와서 그럼.
import 할때 리스트에 두개 뜨는데 아무거나 누르면 이렇게 됨.
결론 : import 할때도 잘 봐가면서 하자. ^ㅅㅠ
lombok은 인도네시아의 섬 이름. 제임스 고슬링 인도네시아 되게 좋아하네
자바 라이브러리의 일종. 코드를 줄여줘서 '코드 다이어트 라이브러리' 라고 한다.