코쿼 11주차 Spring Boot 웹개발 관련 지식조각

Sorbet·2021년 3월 17일
0

업데이트 내용은 노션에서 수정 중 입니다 ㅠㅠ.. 글이 완성되는데로 여기도 업데이트 하겠습니다.

스프링부트의 Repository

  • 우선 스프링에는 Repositroy 라는 interface가 존재하고
    • 이걸 extends 한 인터페이스가 CrudRepository 라는거고
      • PagingAndSortingRepository 라는게 또 존재하고
        • 그아래 JpaRepository 라는게 존재한다
  • 결국, jpa 처리를 담당하는 리포지토리(인터페이스)가 위처럼 4가지 종류가 있고, 모두 Spring Data 에서 공통으로 사용하는 인터페이스
    • Repositroy
    • CrudRepository
      관리되는 엔티티 클래스에 대해 정교한 CRUD 기능을 제공하는데, 아무래도 웹개발의 기초가 게시판만들기다 보니까, CRUD 모델이 매우 적절해서 사용된듯 합니다.
    • PagingAndSortingRepository
    • JpaRepository

그런데 말입니다...

  • 그러면 제가 진행한 qna 프로젝트 미션2에서 왜 User 는 JPA Repo를 적용했고, questions 는 왜 crud repo를 적용했을까요??

ExceptionHandler

userRepository와 questionRepository에서 객체를 꺼내올때 orElseThrow()를 사용

스프링부트에서 Autowired 어노테이션

  • Auto:자동으로 + wired:연결된다 라는 의미인데
  • 이 어노테이션이 부여되면, 각 상황의 타입에 맞는 IOC컨테이너 안에 존재하는 Bean 을 자동으로 주입해 줍니다(누가? 스프링프레임워크가)

사용예시

@repository
public class QnaService {
	private QnaRepo qnaRepo;
    
    @Autowired
    public QnaRepo(QnaRepo qnarepo) {
    	this.qnaRepo = qnaRepo;
    }
}
  • 오토와이어드 어노테이션을 사용하는 경우, 객체의 의존성을 갖는 부분에 어노테이션을 활용해 쉽게 의존성을 주입받을 수 있습니다.

어노테이션이란?

메타 데이터(metadata)

  • 데이터에 대한 데이터. 즉, 다른 데이터를 설명해주는 데이터입니다.
  • 예를들어, 카메라로 사진을 찍었을 때 사진에 대한 [촬영한 시간, 장소, 카메라 모델명, 플래쉬 사용 유무, 등등]이 메타데이터라고 할 수 있습니다.

애노테이션(annotation)

  • 애노테이션의 정의
    • 사전적 의미로 주석(코멘트)
    • 프로그램에 대한 데이터를 제공하는 메타데이터의 한 형태 입니다.
  • 애노테이션의 용도
    • 컴파일러에 제공하는 정보
      • 컴파일러는 애노테이션을 사용하여 에러를 체크하거나 에러메시지를 억제할 수 있습니다.
        ex) @Override, @SuppressWarnings
    • 컴파일 시간 및 배포 시간 처리
      • 소프트웨어 개발툴이 애노테이션 정보를 처리하여 코드, XML 파일등을 생성할 수 있습니다. (애노테이션을 사용한 곳에 특정 코드를 추가할 수 있습니다.
        ex) Lombok의 @Getter, @Setter)
    • 런타임 처리
      • 일부 애너테이션은 런타임에 특정 기능을 실행하도록 정보를 제공합니다. (Java Reflection)

자바 리플렉션(Java Reflection)

  • 자바 리플랙션
    • 구체적인 클래스 타입을 알지 못해도 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API 입니다. 런타임 시에 클래스 이름만 알고있다면 클래스에 대한 정보를 가져오고 활용할 수 있게 해줍니다.

EntityManager

웹개발 테스트

  • HTTP 테스트 쉽게 하기위한 툴들
    Postman, Httpie, Curl
profile
Sorbet is good...!

0개의 댓글