Java에서 어노테이션(Annotation)은
사전적 의미로는 주석을 의미한다.
자바에서 사용될 때의 어노테이션은 코드 사이에 주석처럼 쓰여 특별한 의미, 기능을 수행하도록 하는 기술이다.
즉, 프로그램에게 추가적인 정보를 제공하는 메타데이터라(데이터를 위한 데이터) 볼 수 있다.
기본적으로 제공되는 어노테이션
- @Override
- 선언된 메소드가 오버라이드되었다는 뜻
- 상위 클래스에서(또는 인터페이스) 해당 메소드를 찾을 수 없으면 컴파일 에러를 발생시킨다.
- @Deprecated
- 해당 메서드가 더 이상 사용되지 않는다는 뜻
- 사용할 경우 컴파일 경고를 발생시킨다.
- @SuppressWarnings
- @SafeVarargs
- Java 7 부터 지원
- 제너릭과 같은 가변인자의 매개변수를 사용할 때의 경고를 무시한다.
- @FunctionalInterface
- Java 8 부터 지원
- 메소드가 존재하지 않거나, 1개 이상의 메소드(default 제외)가 존재할 경우 컴파일 오류 발생시킨다.
JPA 어노테이션
- @Entity
- @Id
- @GenerateValue
- PK의 생성규칙을 나타낸다.
- 스프링부트 2.0에서는 GenerationType.IDENTITY 옵션을 추가해야만 auto_increment가 된다.
- @Column
- 테이블의 칼럼을 나타내며 굳이 선언하지 않더라도 해당 클래스의 필드는 모두 칼럼이 된다.
- 기본값 이외에 추가로 변경이 필요한 옵션이 있으면 사용한다.
- ex) 기본값으로 지정된 옵션을 변경하고 싶은 경우
문자열 기본값 VARCHAR(255) -> 사이즈를 500으로 늘리고 싶은 경우
롬복(lombok) 어노테이션
- @NoArgsConstructor
- @Getter
- 클래스 내 모든 필드의 Getter 메소드를 자동 생성
- @Builder
- 해당 클래스의 빌더 패턴 클래스를 생성
- 생성자 상단에 선언 시 생성자에 포함된 필드만 빌더에 포함.
자료 출처
MHLab Blog
태사룡님 블로그
스프링부트2로 웹서비스 출시하기