[TIL] 20231128

Xtraa·2023년 11월 28일
0

TIL

목록 보기
21/99
  • @RequestBody: 메서드 매개변수 앞에 사용하여 요청의 본문(body)에 포함된 데이터를추출합니다.
  • @PathVariable: 메서드 매개변수 앞에 사용하여 URL 경로에 포함된 데이터를 추출합니다.
  • @RequestParam: 메서드 매개변수 앞에 사용하여 요청의 쿼리 파라미터를 추출합니다.
    • 쿼리 파라미터(query parameter)는 웹 요청 URL에 포함되어 데이터를 전달하는 것입니다. 일반적으로 key=value 형태로 URL 뒤에 ? 문자를 사용하여 추가하며, 여러 개의 쿼리 파라미터는 & 문자로 구분합니다. 쿼리 파라미터를 사용하면 클라이언트가 서버에게 요청할 때 추가적인 정보를 전달할 수 있습니다.
    • HTML의 form 태그를 사용하여 POST 방식으로 HTTP 요청을 보낼 수 있습니다. 이때 해당 데이터는 HTTP Body에 name=Robbie&age=95 형태로 담겨져서 서버로 전달됩니다. 해당 데이터를 받는 방법은 앞서 본 방법 처럼 @RequestParam 애너테이션을 사용하여 받아올 수 있습니다.
  • @ModelAttribute: 메서드 매개변수 앞에 사용하여 요청 데이터를 객체로 변환합니다. ?name=Robbie&age=95 처럼 데이터가 두 개만 있다면 괜찮지만 여러 개 있다면 @RequestParam 애너테이션으로 하나 씩 받아오기 힘들 수 있습니다. 이때 @ModelAttribute 애너테이션을 사용하면 Java의 객체로 데이터를 받아올 수 있습니다.
    • @ModelAttribute는 생략이 가능합니다.
      이때, 생각해볼 문제가있습니다!
      Spring에서는 @ModelAttribute뿐만 아니라 @RequestParam도 생략이 가능합니다.
      그렇다면 Spring은 이를 어떻게 구분할까요?
      간단하게 설명하자면 Spring은 해당 파라미터(매개변수)가 SimpleValueType이라면 @RequestParam으로 간주하고 아니라면 @ModelAttribute가 생략되어있다 판단합니다.
      SimpleValueType은 원시타입(int), Wrapper타입(Integer), Date등의 타입을 의미합니다.

request
response

dto

controller
service
repository


  • 빈 (Bean): Spring이 관리하는 객체
  • Spring IoC 컨테이너: 'Bean'을 모아둔 컨테이너

Spring 'Bean' 자동 등록 방법

  • @ComponentScan
    • Spring 서버가 뜰 때 @ComponentScan에 설정해 준 packages 위치와 하위 packages 들을 전부 확인하여 @Component가 설정된 클래스들을 ‘Bean’으로 등록 해줍니다.
    • @SpringBootApplication에 의해 default 설정 되어있습니다.

Spring 'Bean' 사용 방법

  • 필드 위에 @Autowired
    • Spring 4.3 버젼 부터 @Autowired 생략가능. 단, 생성자 선언이 1개 일 때만 생략 가능합니다.

영속성 컨텍스트란?

  • Persistence를 한글로 번역하면 영속성, 지속성 이라는 뜻이 됩니다.
    • Persistence를 객체의 관점으로 해석해 보자면 ‘객체가 생명(객체가 유지되는 시간)이나 공간(객체의 위치)을 자유롭게 유지하고 이동할수 있는 객체의 성질’을 의미합니다.
  • 영속성 컨텍스트를 좀 더 쉽게 표현해 보자면 Entity 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간입니다.

영속성 컨텍스트의 기능

  • 1차 캐시
    • 영속성 컨텍스트는 내부적으로 캐시 저장소를 가지고 있습니다.
    • 캐시 저장소는 Map 자료구조 형태로 되어있습니다.
  • 쓰기 지연 저장소(ActionQueue)
  • 변경 감지(Dirty Checking)

profile
https://xtraa.notion.site/Xtraa-ed48ac432d354d01b5bf5b0da5ec94a9?pvs=4

0개의 댓글