본문 바로가기
Programming

Spring Boot 어노테이션 모음집

by 하하호호 2022. 3. 1.
반응형

 

@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 : 파일은 어노테이션 클래스로 지정한다. 

 

 

 

 

 

 

 

반응형

댓글