- Published on
Spring 어노테이션 정리
- Authors
- Name
- Chan Sol OH
목차
Java Annotation은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. JDK 1.5 버전 이상에서 사용 가능하다. Java Annotation은 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신(JVM)에 포함되어 작용한다. 이번 포스팅에는 Spring Boot 애플리케이션을 작성할 때 쓰이는 Annotation을 정리했다.
lombok
- @EqualsAndHashCode
객체 속성이 몇가지 없으면 두 객체를 비교하기 쉽다. 하지만, 많고 복잡할 경우 객체 속성의 값을 1대1로 비교하기는 어렵다. 그래서 객체의 값을 바탕으로 HashCode를 생성하고 이 HashCode를 바탕으로 두 객체가 동일한지 판단하는 Equal 메서드를 생성한다. 실제로는 equals(Object other)
와 hashCode()
메서드를 생성한다.
- @NoArgumentConstruct
아무런 인자 없이 객체를 생성하는 생성자를 만들어준다. Jackson 라이브러리의 ObjectMapper
가 @RestController
(json)에서 @ResponseBody
의 바인딩 수행 ObjectMapper
는 DTO 객체를 기본 생성자로 생성하기 때문에 생성을 위임한 경우가 아니라면 @NoArgumentConstruct
가 DTO에 꼭 필요하다. 그리고 ObjectMapper
는 Setter와 Getter로 DTO의 필드를 가져온다. Setter가 꼭 필요한 경우가 아니면 Getter를 통해서 전달해야한다.
- @AllArgumentConstruct
모든 필드 값을 인자로하는 생성자를 만들어준다. 객체를 생성할 때 모든 의존성을 추가하는 Constructor based Injection에 사용된다.
- @RequiredArgsConstructor
final
, @NonNull
정의된 모든 필드를 인자로하는 생성자를 만든다. 객체를 생성할 때 null checked된 값을 입력하려면 NullPointerException
이 발생한다. @NonNull
처럼 입력하지 않은 필드는 null
로 유지되고 추후에 넣어줄 수 있다.
- @sl4j
System.out.printlin()
대신에 로그를 찍을 때 사용. info, waring, error 같이 로그의 위험도를 결정할 수 있고, 시간 같이 추가적인 정보를 출력하기 떼문에 유용하다.
Spring
- @Component
개발자가 생성한 Class를 Bean으로 등록할 때 사용하는 Annotation.
- @Bean
개발자가 제어 불가능한 외부 라이브러리나 설정 파일 같은 것들을 Bean으로 만들 때 사용
- @Controller
Spring에게 Class가 Controller 역할을 한다고 명시하기 위해 사용하는 Annotation
- @RequestMapping(value="/user", method=RequestMethod.GET)
요청 들어온 URI와 Annotation value 값이 일치하면 해당 클래스나 메소드가 실행된다.
- @RequestParam
요청 URI에 쿼리 스트링에 값을 받을 때 사용한다.
- @RequestBody
Http 요청에 Body에 들어있는 값을 DTO에 맵핑 시키는 Annotation.
- @ResponseBody
리턴되는 값이 view로 출력되지 않고 HTTP ResponseBody에 직접 쓰여지게 된다. return시 json, xml과 같은 데이터를 return한다.
- @Autowired
Spring Contrainer에 있는 Bean을 의존성 주입할 때 사용하는 Annotation. 하지만 보통 의존성 주입할때는 @RequiredArgsConstructor로 의존성을 주입 받는다.