[Spring] Annotation 정리

진예·2024년 1월 5일
0

Backend : Spring

목록 보기
1/7
post-thumbnail

💡 Annotation

프로그램에 추가적인 정보를 제공해주는 메타 데이터

: 클래스, 메서드, 파라미터 등 다양한 위치에 사용되며, 해당 요소들에 특별한 의미를 부여하여 특별한 기능을 수행하게 한다.


📒 Annotation 생성

@메타 어노테이션
@적용할 어노테이션
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에 의해 계속 참조 가능

📒 Spring Annotation

스프링에서 자주 사용하는 어노테이션 정리! (계속 추가 예정..)

어노테이션명설명
@Configuration설정 정보 클래스 : 객체가 싱글톤으로 생성됨을 보장 (@Component 포함)
@Bean빈 수동 등록
@ComponentScan컴포넌트를 자동으로 스캔하여 스프링 빈에 등록 : 대상 클래스 패키지 → 하위 패키지
@Component@ComponentScan 대상
@Autowired의존관계 자동 주입
@Qualifier추가 구분자 : 조회된 빈이 여러개인 경우, 사용할 빈의 이름을 지정
@Primary컴포넌트 간 우선순위 지정
@ControllerPresentation Layer : View를 리턴하는 컨트롤러 (@Component 포함)
@RepositoryPersistence Layer : DB에 접근하는 코드 (@Component 포함)
@ServiceBusiness 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까지 적용) : 빈 등록 필수

📒 Lombok Annotation

롬복 관련 어노테이션 정리! (역시 계속 추가 예정..)

어노테이션명설명
@Gettergetxx() 자동 생성
@Settersetxx() 자동 생성
@RequiredArgsConstructor필수(final) 멤버를 파라미터로 받는 생성자 자동 생성
@AllArgsConstructor모든 멤버를 파라미터로 받는 생성자 자동 생성
@NoArgsConstructor기본 생성자 자동 생성
@ToStringtoString() 자동 생성 → exclude 지정 시, 해당 필드 제외
@EqualsAndHashCodeequsals() + hashCode() 자동 생성
@Value설정 파일(properties, yml)의 메타 정보 주입 (보안 관련) : ${}
@Data@Getter + @Setter + @RequiredArgsConstructor + @ToString + @EqualsAndHashCode + @Value
profile
백엔드 개발자👩🏻‍💻가 되고 싶다

0개의 댓글