@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)을 주입받는다.
여기서 빈(bean)이란 스프링에서 관리하는 의존성을 주입하는 객체를 말한다. 스프링부트 공식 사이트에서 정의하는 빈의 개념은 다음과 같다. 스프링 IoC(Inversion of Control)에 의해 관리되는 애플리케이션 근본 객체다.
@Getter : 클래스 내 선언된 필드의 get method를 생성해준다.
@RequiredArgsConstructor : 선언된 모든 final 필드가 포함된 생성자를 생성한다. final이 없는 필드는 생성자에 포함하지 않는다.
@RequestParam : 외부에서 API로 넘긴 파라미터를 가져오는 어노테이션이다.
@Entity : 테이블과 링크되는 클래스임을 의미한다. 기본값으로 클래스의 카멜케이스 이름을 언더스코어 네이밍으로 테이블 이름을 매칭한다. (SalesManager.java >> sales_manager table)
@Id : 해당 테이블의 PK 필드라는 것을 명시한다.
@GeneratedValue : PK의 생성 규칙을 명시한다. 스프링부트 2.0 에서는 GenerationType.IDENTITY 옵션을 추가해야 auto_increment가 된다.
@Column : 테이블의 칼럼이라는 것을 명시한다. 굳이 표시하지 않더라도 해당 클래스의 필드는 모두 칼럼이 된다. 그럼에도 사용하는 이유는 변경이 필요한 옵션이 있을 때 사용한다. VARCHAR(255) 기본값에서 사이즈를 늘리거나 할 때 사용한다.
@NoArgsConstructor : 기본 생성자를 자동으로 추가해준다.
@Builder : 해당 클래스의 빌더 패턴 클래스를 생성한다. 빌더 패턴은 디자인 패턴에서 생성패턴에 속한다. 생성자 상단에 선언할 경우 생성자에 포함된 필드만 빌드에 포함하게 된다.
@After : JUnit에서 단위 테스트가 끝날 때 마다 수행되는 메소드를 지정하는 것이다. 배포 전 전체 테스트를 수행할 때 테스트간 데이터 침범을 막기 위해 사용하게 된다. 여러 테스트가 동시에 수행되면 테스트용 데이터베이스인 H2에 데이터가 그대로 남아있기 때문에 다음 테스트가 실패할 수 있다.
@MappedSuperclass : JPA Entity 클래스들이 BaseTimeEntity를 상속하는 경우에 필드들도 칼럼으로 인식하도록 한다.
@EntityListeners(AuditingEntityListener.class) : BaseTimeEntity 클래스에 Auditing 기능을 포함시킨다.
@CreatedDate : Entity가 생성되어 저장될 때 시간이 자동으로 저장된다.
@LastModifiedDate : 조회한 Entity의 값을 변경할 때 시간이 자동으로 저장된다.
@EnableJpaAuditing : JPA Auditing 활성화
@Enumerated(EnumType.STRING) : JPA로 데이터베이스가 저장될 때 Enum 값을 어떤 형태로 저장할지 결정하는 것이다. 디폴트 값은 int로 숫자가 지정된다. 숫자로 지정되면 데이터베이스로 확인할 대 그 값이 무슨 코든지 알 수 없기 때문에 문자열로 지정한다.
@EnableWebSecurity : Spring Security 설정들을 활성화시킨다.
@Target(ElementType.PARAMETER) : 어노테이션이 생성될 수 있는 위치를 지정한다. PARAMETER로 지정하면 메소드의 파라미터로 선언된 객체에서만 사용할 수 있게 된다.
@interface : 파일은 어노테이션 클래스로 지정한다.
'Programming' 카테고리의 다른 글
Kotlin when 문법 사용하는 방법 (0) | 2022.03.07 |
---|---|
Kotlin 변수 상수 타입 지정하는 방법 코틀린에서 변수 내장타입은? (0) | 2022.03.07 |
Kotlin Hello World 출력하기 (0) | 2022.03.07 |
JAVA 오버로딩 오버라이딩이란 추상클래스 구현이란 인터페이스란 객체지향 기술 종류 (0) | 2022.02.25 |
SpringBoot란? 시작시 주의사항 알아야 하는 개념들 (0) | 2022.02.23 |
JAVA StringTokenizer 란 개념 이용방법 (1) | 2022.02.23 |
댓글