이 문서는 Spring Boot 애플리케이션에서 자주 사용되는 애노테이션의 목록입니다.

자세하고 포괄적인 정보는 공식 Javadocs 및 문서를 참조하십시오.

핵심 스프링

  • @Bean - 애노테이션이 붙은 메서드는 Spring IoC 컨테이너에 의해 관리되는 빈을 생성합니다.
  • @Primary - 후보가 여러 개인 경우 Bean에 우선권을 부여해야 함을 나타냅니다. 단일 값 종속성을 autowire할 수 있습니다.
  • 스테레오타입 애노테이션
    • @Component - 애노테이션이 붙은 클래스를 컴포넌트 스캐닝에 의해 발견되고 애플리케이션 컨텍스트에 로드되는 빈으로 표시합니다.
    • @Controller - 애노테이션이 붙은 클래스를 Spring MVC의 요청 핸들러를 포함하는 빈으로 표시합니다.
    • @RestController - 애노테이션이 붙은 클래스를 @Controller 빈으로 표시하고 반환된 결과를 메시지로 직렬화하기 위해 @ResponseBody를 추가합니다.
    • @Configuration - 애노테이션이 붙은 클래스를 자바 설정으로 표시하여 빈을 정의합니다.
    • @Service - 애노테이션이 붙은 클래스를 빈으로 표시합니다(관례상 비즈니스 로직을 포함하는 경우가 많습니다).
    • @Repository - 애노테이션이 붙은 클래스를 빈으로 표시하고(관례상 데이터 접근을 제공하는 경우가 많습니다) SQLExceptionDataAccessExceptions로 자동 변환합니다.

빈 상태

  • @PostConstruct - 의존성 주입이 완료된 후 초기화를 수행하기 위해 애노테이션이 붙은 메서드를 실행합니다.
  • @PreDestroy - 빈이 파괴되기 전에 애노테이션이 붙은 메서드를 실행합니다(예: 종료 시).

설정

  • @Import - 하나 이상의 자바 설정 클래스 @Configuration를 가져옵니다.
  • @PropertySource - application.properties 파일의 위치를 지정하여 키-값 쌍을 Spring Environment에 추가합니다.
  • @Value - 애노테이션이 붙은 필드와 매개변수 값이 주입됩니다.
  • @ComponentScan - 컴포넌트 스캐닝을 구성합니다(@Component, @Service 등).

빈 속성

빈 주입

  • @Autowired - 빈이 애노테이션이 붙은 세터, 필드 또는 생성자 매개변수에 주입됩니다.
  • @Qualifier - 자동 주입 후보를 식별하기 위한 추가 조건으로 빈의 이름을 지정합니다.

유효성 검사

  • @Valid - 속성, 메서드 매개변수 또는 반환 유형을 유효성 검사 대상으로 표시합니다.
  • @Validated - 여러 그룹의 유효성 검사를 허용하는 @Valid의 변형입니다(예: 애노테이션이 붙은 클래스의 모든 필드).
  • @NotNull - null이 아니어야 합니다.
  • @NotEmpty - null이 아니고 비어 있지 않아야 합니다.
  • @NotBlank - null이 아니고 최소한 하나의 공백이 아닌 문자가 있어야 합니다.
  • @Digits - 허용 범위 내의 숫자여야 합니다.
  • @Past - 과거의 순간, 날짜 또는 시간이어야 합니다.
  • @Future - 미래의 순간, 날짜 또는 시간이어야 합니다.

스프링 부트

스프링 부트 테스트

  • @SpringBootTest - 애노테이션이 붙은 테스트 클래스는 통합 테스트를 위해 전체 애플리케이션 컨텍스트를 로드합니다.
  • @WebMvcTest - 애노테이션이 붙은 테스트 클래스는 웹 레이어만 로드합니다(서비스 및 데이터 레이어는 무시됨).
  • @DataJpaTest - 애노테이션이 붙은 클래스는 JPA 구성 요소만 로드합니다.
  • @JsonTest - 애노테이션이 붙은 클래스는 직렬화 및 역직렬화 테스트를 위해 JSON 매퍼만 로드합니다.
  • @MockBean - 애노테이션이 붙은 필드를 모의 객체로 표시하고 애플리케이션 컨텍스트에 빈으로 로드합니다.
  • @SpyBean - 빈의 부분 모킹을 허용합니다.
  • @Mock - 애노테이션이 붙은 필드를 모의 객체로 정의합니다.

스프링 테스트

  • @ContextConfiguration - 통합 테스트를 위해 애플리케이션 컨텍스트를 로드할 @Configuration을 정의합니다.
  • @ExtendWith - 테스트를 실행할 확장을 정의합니다(예: MockitoExtension).
  • @SpringJUnitConfig - @ContextConfiguration@ExtendWith(SpringExtension.class)를 결합합니다.
  • @TestPropertySource - 통합 테스트에 사용되는 속성 파일의 위치를 정의합니다.
  • @DirtiesContext - 애노테이션이 붙은 테스트가 애플리케이션 컨텍스트를 더럽히고 각 테스트 후에 정리됨을 나타냅니다.
  • @ActiveProfiles - 테스트 애플리케이션 컨텍스트를 초기화할 때 로드할 활성 빈 정의를 정의합니다.
  • @Sql - 테스트 전후에 실행할 SQL 스크립트와 문을 정의할 수 있습니다.

트랜잭션

  • @EnableTransactionManagement - 애노테이션 기반 트랜잭션 선언 @Transactional을 활성화합니다.
  • @Transactional - 애노테이션이 붙은 메서드는 트랜잭션 방식으로 실행됩니다.

스프링 JPA 및 하이버네이트

  • @Id - 애노테이션이 붙은 필드를 엔티티의 기본 키로 표시합니다.
  • @GeneratedValue - 기본 키의 생성 전략을 제공합니다.
  • @Column - 필드에 대한 추가 구성을 제공합니다(예: 열 이름).
  • @Table - 엔티티에 대한 추가 구성을 제공합니다(예: 테이블 이름).
  • @PersistenceContext - EntityManager가 애노테이션이 붙은 세터와 필드에 주입됩니다.
  • @Embedded - 애노테이션이 붙은 필드는 Embeddable 클래스의 값으로 인스턴스화됩니다.
  • @Embeddable - 애노테이션이 붙은 클래스의 인스턴스는 엔티티의 일부로 저장됩니다.
  • @EmbeddedId - 애노테이션이 붙은 속성을 임베디드 클래스에 의해 매핑된 복합 키로 표시합니다.
  • @AttributeOverride - 필드의 기본 매핑을 재정의합니다.
  • @Transient - 애노테이션이 붙은 필드는 영속적이지 않습니다.
  • @CreationTimestamp - 애노테이션이 붙은 필드는 엔티티가 처음 저장된 타임스탬프를 포함합니다.
  • @UpdateTimestamp - 애노테이션이 붙은 필드는 엔티티가 마지막으로 업데이트된 타임스탬프를 포함합니다.
  • @ManyToOne - N:1 관계를 나타내며, 애노테이션이 붙은 필드를 포함하는 엔티티는 다른 클래스의 엔티티와 단일 관계를 가지지만 다른 클래스는 여러 관계를 가집니다.
  • @JoinColumn - 소유 측의 @ManyToOne 또는 @OneToOne 관계에서 엔티티를 조인하는 열을 나타내거나 단방향 @OneToMany를 나타냅니다.
  • @OneToOne - 1:1 관계를 나타냅니다.
  • @MapsId - @ManyToOne 또는 @OneToOne 관계의 소유 측 조인 열을 참조하여 참조 및 참조된 엔티티의 기본 키로 만듭니다.
  • @ManyToMany - N:M 관계를 나타냅니다.
  • @JoinTable - 조인 테이블을 사용한 연관을 지정합니다.
  • @BatchSize - 애노테이션이 붙은 엔티티 컬렉션을 지연 로드할 크기를 정의합니다.
  • @FetchMode - 연관에 대한 페치 전략을 정의합니다(예: 단일 서브쿼리로 모든 엔티티 로드).

스프링 시큐리티

  • @EnableWebSecurity - 웹 보안을 활성화합니다.
  • @EnableGlobalMethodSecurity - 메서드 보안을 활성화합니다.
  • @PreAuthorize - SpEL을 사용하여 접근 제어 표현식을 정의하며, 보호된 메서드를 호출하기 전에 평가됩니다.
  • @PostAuthorize - SpEL을 사용하여 접근 제어 표현식을 정의하며, 보호된 메서드를 호출한 후 평가됩니다.
  • @RolesAllowed - 보호된 메서드를 호출할 수 있는 보안 역할 목록을 지정합니다.

스프링 AOP

  • @EnableAspectJAutoProxy - @Aspect로 표시된 구성 요소를 처리하는 지원을 활성화합니다.
  • @Aspect - 애노테이션이 붙은 구성 요소를 포인트컷과 어드바이스를 포함하는 측면으로 선언합니다.
  • @Before - 호출이 조인 포인트로 전파되기 전에 실행되는 포인트컷을 선언합니다.
  • @AfterReturning - 조인 포인트가 성공적으로 결과를 반환하면 실행되는 포인트컷을 선언합니다.
  • @AfterThrowing - 조인 포인트가 예외를 던지면 실행되는 포인트컷을 선언합니다.
  • @After - 조인 포인트가 성공적으로 결과를 반환하거나 예외를 던지면 실행되는 포인트컷을 선언합니다.
  • @Around - 호출 전에 실행되는 포인트컷을 선언하여 조인 포인트의 실행을 어드바이스에 제어를 넘깁니다.

유용한 링크