[항해99] 주특기 입문 3일차 TIL - 오늘 한 일 : MRI 촬영하고 몸살나기

LIHA·2023년 2월 6일
0

항해99

목록 보기
36/54
post-thumbnail
post-custom-banner

동현 매니저님의 학습조언

어차피 또 보게 되어있으니 한번에 이해하려고 하지 말고, 인강을 많이 보려 하지 말고 일단 따라할것.
쿼리공부는 아무튼 하면 좋다.
강의를 보면서 클론을 하고, 클론한걸 토대로 프로젝트를 해봐라. 그러다 프로젝트에서 모르겠는 부분이 발생하면 그때 다시 강의를 봐라.

그러려면 진도를 빨리 나가야 한다. 적어도 하루는 스스로의 코드나 공부방향, 속도 등을 분석을 할 시간이 필요하다. 그렇게 어떻게든 어영부영이라도 과제를 해놓고 나면 머리에 뭔가 남는게 있을 것이다.


Spring 강의 - 연습강의와 Project memo에 대한 기록들

지금이야 값이 2개지만 나중에 클라이언트에서 보내는 값이 많아진다면?
그걸 일일이 RequestParam 형식으로 보내줄 수 없기 때문에 스프링에서는 객체형식으로 받는 방법이 있다.
-> 왜 RequestParam 못쓰냐면 쟈료형이랑 변수명 일일이 다 쳐줘야 하기 때문.

  • 그 방법이 ModelAttribute -> 이러면 객체 형식만 써도 (@ModelAttribute Star star) Spring이 알아서 매칭해서 그 안에 있는거 불러와줌.
    -> 괄호 안의 @ModelAttribute는 생략 가능함!
    -> 그런데 @ModelAttribute 사용하려면 해당 객체쪽 클래스에 @Setter가 반드시 필요하다.
@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 를 붙여서 받으면 된다.

  • 주의점은, 내가 값을 받아오려는 대상의 필드값과 클라이언트쪽에서 보내주는 필드값이 정확히 일치해야 값을 받아올 수 있다.
    -> 이게 일치하지 않으면 F12 DevTool에서 payload는 제대로 보냈는데 Response 에서는 제대로 받지 못해서 null이 뜨는게 보임.
    -> 얘는 결국 누구랑 불일치했냐면 HTML쪽이 못 그 값을 못 잡아온거임. Controller나 대상 객체는 nam 으로 수정했어도 HTML은 name으로 선언되어 있으므로.

결론 : 클라이언트에서 보내는 키값과 서버에서 받는 필드값을 정확히 일치시키자.
= 프론트랑 키값을 모두 통일, 정확히 일치시켜야 한다!


Transactional import 시킬때 주의하자!

  • @Transactional(readOnly = true) 썼더니 readOnly 쪽에 빨간줄이 뜨면서 안 먹히는데요?
    -> 이거 Transactional에 빨간줄 쳐지면서 import 할때, springboot 꺼가 아니라 javax Transactional import 해와서 그럼.
    import 할때 리스트에 두개 뜨는데 아무거나 누르면 이렇게 됨.

  • 결론 : import 할때도 잘 봐가면서 하자. ^ㅅㅠ


롬복이 뭐에요? 기억나는건 빨간 고추밖에 없는데

lombok은 인도네시아의 섬 이름. 제임스 고슬링 인도네시아 되게 좋아하네
자바 라이브러리의 일종. 코드를 줄여줘서 '코드 다이어트 라이브러리' 라고 한다.

  • 여러가지 어노테이션을 제공하고, 이를 기반으로 반복 소스코드를 컴파일 과정에서 생성해주는 방식으로 동작하는 라이브러리.
    -> 우리가 어노테이션을 쓰고 코드를 짤 땐 getter, setter 등을 직접 쓰진 않지만,
    실제 컴파일된 결과물인 .class 파일에는 코드가 모두 생성되어 있다.
    -> 즉, 우리가 메서드를 안 만들어도 얘네가 알아서 해준다는 것.
profile
갑자기 왜 춤춰?
post-custom-banner

0개의 댓글