Table of contents

    어노테이션 정리

    - @SpringBootApplication

    스프링 부트의 자동 설정, 스프링 Bean 읽기와 생성을 모두 자동으로 생성해준다.

    해당 어노테이션이 있는 위치부터 설정을 읽어가기 때문에 포함하고 있는 클래스는 항상 프로젝트 최상단에 있어야 한다.

     

    - @RestController 

    컨트롤러를 JSON을 반환하는 컨트롤러로 만들어 준다.

    이전에는 @ResponseBody를 각 메소드마다 선언했던 것을 한 번에 사용할 수 있게 해준다고 생각하면 된다.

     

    - @GetMapping

    HTTP Method인 GET 요청을 받을 수 있는 API를 만들어 준다.

    이전에는 @RequestMapping(method = RequestMethod.GET) 형태로 사용했다.

     

    - @RunWith(SpringRunner.class)

    테스트를 진행 할 때 JUnit에 내장된 실행자 외에 다른 실행자를 실행 시킨다.

    여기선 SpringRunner 라는 스프링 실행자를 사용. 즉, 스프링 부트 테스트와 JUnit 사이에 연결자 역할이다.

     

    - @WebMvcTest

    여러 스프링 어노테이션 중, Web(Spring MVC)에 집중할 수 있는 어노테이션이다.

    선언할 경우 @Controller, @ControllerAdvice 등을 사용할 수 있다.

    단, @Service, @Component, @Repository 등은 사용할 수 없다.

     

    - @Autowired

    스프링이 관리하는 빈(Bean)을 주입 받는다.

     

    - @Getter

    선언된 모든 필드의 get 메소드를 생성해 준다.

     

    - @RequiredArgsConstructor

    선언된 모든 final 필드가 포함된 생성자를 생성해 준다.

    final이 없는 필드는 생성자에 포함되지 않는다.

     

    - @Entity

    테이블가 링크될 클래스임을 나타낸다.

    기본값으로 클래스의 카멜케이스 이름을 언더스코어 네이밍으로 테이블 이름을 매칭한다.

    ex ) SalesManager.java > sales_manager table

     

    - @Id

    해당 테이블의 PK 필드를 나타낸다.

     

    - @GeneratedValue

    PK의 생성 규칙을 나타낸다.

    스프링 부트 2.0 에서는 GenerationType.IDENTITY 옵션을 추가해야만 auto_increment가 된다.

     

    - @Column

    테이블의 칼럼을 나타내며 굳이 선언되지 않더라도 해당 클래스의 필드는 모두 칼럼이 된다.

    사용하는 이유는, 기본값 외에 추가로 변경이 필요한 옵션이 있으면 사용한다.

    문자열의 경우 VARCHAR(255)가 기본값인데, 사이즈를 500으로 늘리고 싶거나, 타입을 TEXT로 변경하고 싶거나 등의 

    경우에 사용한다.

     

    - @NoArgsConstructor

    기본 생성자 자동 추가

     

    - @Builder

    해당 클래스의 빌더 패턴 클래스를 생성

    생성자 상단에 선언 시 생성자에 포함된 필드만 빌더에 포함

    > 자바 빈 규약을 생각하며 getter/setter를 무작정 생성하는 경우에 해당 클래스의 인스턴스 값들이 언제 어디서 변해야하는지

    코드상으로 명확하게 구분할 수가 없어, 차후 기능 변경시 복잡해진다.

    setter 대신 생성자를 통해 최종값을 채운 뒤 DB에 삽입하는 구조이며, 생성자 대신에 @Builder를 통해 제공되는 빌더 클래스를 사용

     

    - @After

    JUnit에서 단위 테스트가 끝날 때마다 수행되는 메소드를 지정

    보통은 배포 전 전체 테스트를 수행할 때 테스트간 데이터 침범을 막기 위해 사용한다.

    여러 테스트가 동시에 수행되면 테스트용 데이터베이스인 H2에 데이터가 그대로 남아 있어 다음 테스트 실행 시 테스트가 실패 할 수 있다.

     

    - @Transactional

    클래스나 메서드에 붙여줄 경우, 해당 범위 내 메서드가 트랜잭션이 되도록 보장해준다.

    독립성과 원자성이 보장되기 때문에 메소드 실행 중 다른 요청이 들어와도 신뢰성 보장된다.

     

    임시 저장.

    출처 : 이동욱 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

     

     

     

     

     

     

     

     

    728x90
    SMALL