이 문서는 Spring Boot 애플리케이션에서 자주 사용되는 애노테이션의 목록입니다.
자세하고 포괄적인 정보는 공식 Javadocs 및 문서를 참조하십시오.
핵심 스프링
- @Bean - 애노테이션이 붙은 메서드는 Spring IoC 컨테이너에 의해 관리되는 빈을 생성합니다.
- @Primary - 후보가 여러 개인 경우 Bean에 우선권을 부여해야 함을 나타냅니다. 단일 값 종속성을 autowire할 수 있습니다.
- 스테레오타입 애노테이션
- @Component - 애노테이션이 붙은 클래스를 컴포넌트 스캐닝에 의해 발견되고 애플리케이션 컨텍스트에 로드되는 빈으로 표시합니다.
- @Controller - 애노테이션이 붙은 클래스를 Spring MVC의 요청 핸들러를 포함하는 빈으로 표시합니다.
- @RestController - 애노테이션이 붙은 클래스를
@Controller
빈으로 표시하고 반환된 결과를 메시지로 직렬화하기 위해@ResponseBody
를 추가합니다. - @Configuration - 애노테이션이 붙은 클래스를 자바 설정으로 표시하여 빈을 정의합니다.
- @Service - 애노테이션이 붙은 클래스를 빈으로 표시합니다(관례상 비즈니스 로직을 포함하는 경우가 많습니다).
- @Repository - 애노테이션이 붙은 클래스를 빈으로 표시하고(관례상 데이터 접근을 제공하는 경우가 많습니다)
SQLException
을DataAccessExceptions
로 자동 변환합니다.
빈 상태
- @PostConstruct - 의존성 주입이 완료된 후 초기화를 수행하기 위해 애노테이션이 붙은 메서드를 실행합니다.
- @PreDestroy - 빈이 파괴되기 전에 애노테이션이 붙은 메서드를 실행합니다(예: 종료 시).
설정
- @Import - 하나 이상의 자바 설정 클래스
@Configuration
를 가져옵니다. - @PropertySource -
application.properties
파일의 위치를 지정하여 키-값 쌍을 SpringEnvironment
에 추가합니다. - @Value - 애노테이션이 붙은 필드와 매개변수 값이 주입됩니다.
- @ComponentScan - 컴포넌트 스캐닝을 구성합니다(
@Component
,@Service
등).
빈 속성
- @Lazy - 애노테이션이 붙은 빈은 첫 사용 시 지연 초기화됩니다.
- @Profile - 정의된 프로필이 활성화된 경우에만 빈이 초기화됩니다.
- @Scope - 빈 생성 범위를 정의합니다(예: 프로토타입, 싱글톤 등).
- @DependsOn - 생성 순서 측면에서 다른 빈에 대한 종속성을 명시적으로 정의합니다.
- @Order - 빈 목록을 주입할 때 정렬 순서를 정의하지만 단일 빈이 예상되는 경우 우선순위를 해결하지는 않습니다.
- @Primary - 여러 빈을 자동 주입할 수 있는 경우 애노테이션이 붙은 빈이 선택됩니다.
- @Conditional - 조건이 만족되는 경우에만 애노테이션이 붙은 빈이 생성됩니다.
빈 주입
- @Autowired - 빈이 애노테이션이 붙은 세터, 필드 또는 생성자 매개변수에 주입됩니다.
- @Qualifier - 자동 주입 후보를 식별하기 위한 추가 조건으로 빈의 이름을 지정합니다.
유효성 검사
- @Valid - 속성, 메서드 매개변수 또는 반환 유형을 유효성 검사 대상으로 표시합니다.
- @Validated - 여러 그룹의 유효성 검사를 허용하는
@Valid
의 변형입니다(예: 애노테이션이 붙은 클래스의 모든 필드). - @NotNull - null이 아니어야 합니다.
- @NotEmpty - null이 아니고 비어 있지 않아야 합니다.
- @NotBlank - null이 아니고 최소한 하나의 공백이 아닌 문자가 있어야 합니다.
- @Digits - 허용 범위 내의 숫자여야 합니다.
- @Past - 과거의 순간, 날짜 또는 시간이어야 합니다.
- @Future - 미래의 순간, 날짜 또는 시간이어야 합니다.
- …
스프링 부트
- @SpringBootConfiguration - Spring Boot 애플리케이션
@Configuration
을 나타냅니다. - @EnableAutoConfiguration - 클래스 경로를 기반으로 필요한 빈을 제공하기 위해 애플리케이션 컨텍스트 자동 구성을 활성화합니다.
- @ConfigurationProperties - 키 값 속성의 외부 바인딩을 제공합니다.
- @ConstructorBinding - 세터 대신 생성자를 사용하여 속성을 바인딩합니다.
- @ConfigurationPropertiesScan -
@ConfigurationProperties
클래스를 자동으로 감지합니다. - @SpringBootApplication -
@SpringBootConfiguration
,@EnableAutoConfiguration
,@ConfigurationPropertiesScan
및@ComponentScan
의 조합입니다. - @EntityScan - 엔티티 클래스를 스캔할 기본 패키지를 구성합니다.
- @EnableJpaRepositories - JPA 리포지토리의 자동 구성을 활성화합니다.
- @AutoConfiguration - 새로운 자동 구성 클래스를 정의합니다.
- @AutoConfigureBefore - 지정된 자동 구성 클래스보다 먼저 자동 구성을 적용합니다.
- @AutoConfigureAfter - 지정된 자동 구성 클래스 이후에 자동 구성을 적용합니다.
스프링 부트 테스트
- @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 - 호출 전에 실행되는 포인트컷을 선언하여 조인 포인트의 실행을 어드바이스에 제어를 넘깁니다.