프로그램에 추가적인 정보를 제공해주는 메타 데이터
: 클래스, 메서드, 파라미터 등 다양한 위치에 사용되며, 해당 요소들에 특별한 의미를 부여하여 특별한 기능을 수행하게 한다.
@메타 어노테이션 @적용할 어노테이션 public @interface 어노테이션명 { // 변수 설정 // 로직 설정 }
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface Login {
}
@Target(ElementType.타입)
: 어노테이션이 사용될 위치
타입명 | 설명 |
---|---|
PACKAGE | 패키지 |
TYPE | 타입 |
CONSTRUCTOR | 생성자 |
FIELD | 멤버변수 |
METHOD | 메서드 |
ANNOTATION | 어노테이션 |
PARAMETER | 파라미터 |
@Retention(RetentionPolicy.범위)
: 어노테이션 정보 유지 범위 설정
범위명 | 설명 |
---|---|
SOURCE | 컴파일 전까지 유효 |
CLASS | 컴파일러가 클래스를 참조할 때까지 유효 |
RUNTIME | 컴파일 이후에도 JVM에 의해 계속 참조 가능 |
스프링에서 자주 사용하는 어노테이션 정리! (계속 추가 예정..)
어노테이션명 | 설명 |
---|---|
@Configuration | 설정 정보 클래스 : 객체가 싱글톤으로 생성됨을 보장 (@Component 포함) |
@Bean | 빈 수동 등록 |
@ComponentScan | 컴포넌트를 자동으로 스캔하여 스프링 빈에 등록 : 대상 클래스 패키지 → 하위 패키지 |
@Component | @ComponentScan 대상 |
@Autowired | 의존관계 자동 주입 |
@Qualifier | 추가 구분자 : 조회된 빈이 여러개인 경우, 사용할 빈의 이름을 지정 |
@Primary | 컴포넌트 간 우선순위 지정 |
@Controller | Presentation Layer : View를 리턴하는 컨트롤러 (@Component 포함) |
@Repository | Persistence Layer : DB에 접근하는 코드 (@Component 포함) |
@Service | Business Layer : 비즈니스 로직과 관련된 모든 코드 (@Component 포함) |
@RequestMapping | 요청 URI를 통해 컨트롤러 및 메서드 매핑 |
@[Method]Mapping | 요청 URI + 메서드를 통해 컨트롤러 및 메서드 매핑 |
@PathVariable | 경로변수 {} 처리 |
@RequestParam | 쿼리 파라미터 처리 : 필드 단위 |
@ModelAttribute | 쿼리 파라미터 처리 : 객체 변환 + 모델에 해당 데이터를 담아서 전달 |
@RequestBody | 요청의 Body에 담긴 데이터 처리 (타입 자동 변환) |
@ResponseBody | 반환값을 응답의 Body에 담아 전송 (타입 자동 변환) |
@RestController | @Controller + @ResponseBody : 응답 메시지 반환 (@Component 포함) |
@Validated (spring) / @Valid (java) | 검증 수행 |
@SessionAttribute | 세션 요소 조회 |
@PostConstruct | 초기화 콜백 : 의존관계 주입 후 실행 (AOP 적용 안될 수 있음) |
@PreDestroy | 소멸 콜백 : 스프링 컨테이너 종료 전 실행 |
@ExceptionHandler | 특정 예외를 처리 |
@Number/DateTimeFormat | 스프링에서 제공하는 숫자, 날짜 관련 포맷터 |
@Transactional | 트랜잭션 적용 (스프링 트랜잭션 AOP) |
@EventListner | 스프링 컨테이너 초기화 후 발생하는 이벤트 (AOP까지 적용) : 빈 등록 필수 |
롬복 관련 어노테이션 정리! (역시 계속 추가 예정..)
어노테이션명 | 설명 |
---|---|
@Getter | getxx() 자동 생성 |
@Setter | setxx() 자동 생성 |
@RequiredArgsConstructor | 필수(final) 멤버를 파라미터로 받는 생성자 자동 생성 |
@AllArgsConstructor | 모든 멤버를 파라미터로 받는 생성자 자동 생성 |
@NoArgsConstructor | 기본 생성자 자동 생성 |
@ToString | toString() 자동 생성 → exclude 지정 시, 해당 필드 제외 |
@EqualsAndHashCode | equsals() + hashCode() 자동 생성 |
@Value | 설정 파일(properties, yml)의 메타 정보 주입 (보안 관련) : ${} |
@Data | @Getter + @Setter + @RequiredArgsConstructor + @ToString + @EqualsAndHashCode + @Value |