728x90
상시 업데이트하는 글입니다.
Spring Boot 어노테이션
어노테이션 | 설명 | 추가 정보 |
@SpringBootApplication | 스프링 부트 애플리케이션의 시작점으로, 여러 설정을 자동으로 활성화합니다. | @Configuration, @EnableAutoConfiguration, @ComponentScan을 포함합니다. |
Web 어노테이션
어노테이션 | 설명 | 추가 정보 |
@Controller | REST API를 처리하지 않고 클라이언트에게 view를 제공합니다. | @RestController와 혼동하지 않도록 주의해야 합니다. |
@RestController | REST Api를 처리하는 Controller JSON 형태로 데이터를 반환합니다. |
@Controller와 혼동하지 않도록 주의해야합니다. |
@RequestMapping | 특정 URL을 처리하는 메소드나 클래스에 사용합니다. | 메소드 레벨에서 사용 시 HTTP 메소드도 설정 필요. |
@GetMapping | 특정 URL로 들어오는 GET 요청을 처리합니다. | 자원 조회에 사용됩니다. |
@PostMapping | 특정 URL로 들어오는 POST 요청을 처리합니다. | 일반적으로 데이터 생성에 사용됩니다. |
@PutMapping | 특정 URL로 들어오는 PUT 요청을 처리합니다. | 자원 업데이트에 사용됩니다. |
@DeleteMapping | 특정 URL로 들어오는 DELETE 요청을 처리합니다. | 자원 삭제에 사용됩니다. |
@PathVariable | URL 경로에서 변수 값을 추출합니다. | URL 템플릿에 포함된 변수를 메소드의 파라미터로 매핑합니다. |
@RequestParam | 요청 파라미터를 메소드의 파라미터로 매핑합니다. | URL 쿼리 파라미터를 메소드 인자에 바인딩할 때 사용합니다. |
@RequestBody | HTTP 요청의 본문(body) 내용을 Java 객체로 변환합니다. | 주로 POST, PUT 요청에서 JSON 데이터를 처리할 때 사용됩니다. |
@ResponseBody | 메소드의 반환값을 HTTP 응답 본문으로 변환하여 클라이언트에게 전달합니다. | 주로 @Controller에서 JSON 데이터를 반환할 때 사용됩니다. |
@ModelAttribute | 요청 데이터를 모델 객체에 바인딩하고, 이를 View와 함께 전달합니다. | 주로 GET 요청에서 form 데이터를 바인딩할 때 사용됩니다. |
Lombok 어노테이션
어노테이션 | 설명 | 추가 정보 |
@Data | 모든 필드에 대해 getter, setter, toString등을 자동 생성합니다. | 성능에 민감한 경우, @Data 대신 필요한 어노테이션만 사용하는 것이 좋음. |
@Getter, @Setter | 개별 필드 또는 클래스의 getter, setter 메소드를 자동 생성합니다. | 특정 필드만 접근 제어가 필요하면, @Getter와 @Setter를 필드에 적용. |
@AllArgsConstructor | 모든 필드를 파라미터로 받는 생성자를 자동 생성합니다. | 모든 필드에 대한 생성자를 필요로 할 때 유용합니다. |
@NoArgsConstructor | 인자가 없는 기본 생성자를 자동 생성합니다. | 기본 생성자가 필요한 경우 사용합니다. |
@ToString | toString() 메소드를 자동 생성합니다. | 객체의 문자열 표현을 원하는 형식으로 설정할 수 있습니다. |
@RequiredArgsConstructor | final 필드나 @NonNull 필드를 파라미터로 받는 생성자를 자동 생성합니다. | 변하지 않는 필드에 대한 의존성을 설정할 때 유용합니다. |
@Slf4j | 클래스에 로깅을 위한 Logger 객체를 자동으로 생성합니다. | Lombok을 통해 편리하게 로깅을 사용할 수 있습니다. |
@Builder | 빌더 패턴을 구현하여 객체 생성 시 필드 값을 선택적으로 설정할 수 있게 합니다. | 주로 객체의 불변성을 유지하면서 유연한 객체 생성이 필요할 때 사용됩니다. |
@EqualsAndHashCode | 객체의 equals 및 hashCode 메소드를 자동 생성합니다. | 특정 필드만 고려하고 싶다면 exclude 또는 of 파라미터를 설정할 수 있습니다. |
@SuperBuilder | 상위 클래스의 필드를 포함해 빌더 패턴을 구현합니다. | 상속 구조의 부모 클래스와 자식 클래스에서 빌더 패턴을 사용할 때 유용합니다. |
JSON 처리 어노테이션
어노테이션 | 설명 | 추가 정보 |
@JsonNaming | JSON 필드 이름의 정책을 지정합니다. | PropertyNamingStrategy를 통해 필드 이름 변환 전략을 설정합니다. |
@JsonProperty | JSON 필드와 클래스 필드의 매핑을 설정합니다. | JSON 직렬화 및 역직렬화 시 필드 이름을 맞출 수 있습니다. |
@JsonIgnore | JSON 직렬화 및 역직렬화 과정에서 특정 필드를 무시합니다. | 필드를 JSON 데이터에서 제외하고 싶을 때 사용합니다. |
@JsonInclude | JSON 직렬화 시 포함할 필드를 설정합니다. | 기본값, Null 값 등을 포함하거나 제외할 수 있습니다. |
@JsonFormat | JSON 직렬화 및 역직렬화 시 날짜와 시간의 포맷을 지정합니다. | 날짜와 시간 데이터를 원하는 포맷으로 변환할 수 있습니다. |
@JsonCreator | JSON 객체를 역직렬화할 때 사용되는 생성자를 지정합니다. | 생성자 또는 팩토리 메소드를 통해 객체를 생성할 수 있습니다. |
@JsonPropertyOrder | JSON 직렬화 시 필드의 순서를 지정합니다. | 필드의 순서를 지정하여 직렬화된 JSON의 필드 순서를 제어합니다. |
Test 어노테이션
어노테이션 | 설명 | 추가 정보 |
@SpringBootTest | 스프링 부트 애플리케이션 컨텍스트에서 테스트를 실행합니다. | 애플리케이션 전체를 통합적으로 테스트할 때 사용됩니다. |
@Test | JUnit에서 테스트 메소드임을 나타냅니다. | 메소드가 단위 테스트로 실행되도록 지정합니다. |
@Transactional | 트랜잭션 내에서 메소드나 클래스를 실행하게 합니다. 메소드 실행 후 트랜잭션이 자동으로 커밋되거나 롤백됩니다. | 주로 테스트에서 데이터 일관성을 유지하기 위해 사용됩니다. |
의존성 주입 어노테이션
어노테이션 | 설명 | 추가 정보 |
@Autowired | 스프링에서 의존성 주입을 자동으로 처리합니다. | 생성자, 필드, 메소드에 적용 가능하며, 기본적으로 타입을 기준으로 의존성을 주입합니다. |
@PostConstruct | 의존성 주입이 완료된 후 초기화 작업을 수행합니다. | 객체가 생성된 후 호출되며, 보통 설정 작업이나 자원 초기화에 사용됩니다. 스프링 빈의 라이프사이클 초기화 단계에서 실행됩니다. |
@Component | 해당 클래스를 스프링의 빈으로 등록합니다. | @Service, @Repository, @Controller와 같은 특화된 컴포넌트 어노테이션의 상위 개념입니다. |
@PreDestroy | 스프링 빈이 소멸되기 전에 호출되어 정리 작업을 수행합니다. | 주로 자원을 해제하거나 종료 작업이 필요할 때 사용됩니다. |
JPA 어노테이션
어노테이션 | 설명 | 추가 정보 |
@Entity | JPA에서 데이터베이스 테이블과 매핑되는 클래스를 나타냅니다. | 해당 클래스는 데이터베이스 테이블의 레코드를 표현하는 엔티티로 사용됩니다. |
@Id | 엔티티의 주 키(Primary Key)를 정의합니다. | 주 키는 엔티티의 고유성을 보장하는 필드입니다. |
@Column | 엔티티의 필드를 데이터베이스 테이블의 열(column)과 매핑합니다. | 필드의 데이터베이스 열 속성을 정의할 수 있습니다. |
@GeneratedValue | 주 키 값의 생성 전략을 정의합니다. | 자동 증가, 시퀀스 사용 등 여러 전략을 설정할 수 있습니다. |
@Transient | 해당 필드가 데이터베이스에 매핑되지 않음을 나타냅니다. | 데이터베이스와의 매핑에서 제외할 필드를 지정할 때 사용됩니다. |
@OneToOne | 두 엔티티 간의 1:1 관계를 나타냅니다. | 외래 키를 사용하여 다른 엔티티와의 일대일 관계를 정의합니다. |
@OneToMany | 두 엔티티 간의 1:N 관계를 나타냅니다. | 한 엔티티가 여러 다른 엔티티와 관계를 가질 때 사용됩니다. |
@ManyToOne | 두 엔티티 간의 N:1 관계를 나타냅니다. | 여러 엔티티가 하나의 엔티티와 관계를 가질 때 사용됩니다. |
@ManyToMany | 두 엔티티 간의 N:M 관계를 나타냅니다. | 중간 테이블을 사용하여 다대다 관계를 정의할 때 사용됩니다. |
@Query | JPQL(Java Persistence Query Language)로 작성된 쿼리를 실행하기 위해 사용됩니다. | 복잡한 쿼리나 조건에 따라 데이터를 조회할 때 유용합니다. |
@Where | JPQL 쿼리에서 조건을 추가할 때 사용합니다. | 엔티티 클래스나 컬렉션 필드에 적용하여, 특정 조건을 항상 쿼리에 포함하도록 설정할 수 있습니다. |
@JoinColumn | 엔티티의 필드를 외래 키와 매핑할 때 사용합니다. | 주로 관계 매핑에서 외래 키를 명시적으로 지정할 때 활용되며, 다대일(@ManyToOne) 또는 일대일(@OneToOne) 관계에서 사용됩니다. |
@MappedSuperclass | JPA 엔티티 클래스의 공통 속성을 정의하는 데 사용됩니다. | 상속된 클래스가 직접 테이블로 매핑되지 않고, 하위 엔티티 클래스에서만 사용됩니다. |
@EntityScan | 스프링 부트 애플리케이션에서 JPA 엔티티를 자동으로 검색할 기본 패키지를 설정합니다. | @SpringBootApplication 기본 패키지 외의 위치에 있는 엔티티를 인식할 때 사용됩니다 |
@EnableJpaRepositories | 스프링 부트 애플리케이션에서 JPA 레포지토리를 활성화하고 기본 패키지를 설정합니다. | 특정 패키지의 리포지토리 인터페이스를 찾아 스프링 데이터 JPA로 관리하게 합니다. |
Validation 어노테이션
어노테이션 | 설명 | 추가 정보 |
이메일 형식인지 검증합니다. | 예: "user@example.com" | |
@Pattern | 정규 표현식을 사용해 문자열 패턴을 검증합니다. | 예: @Pattern(regexp="^[a-zA-Z0-9]+$") |
@AssertFalse | 값이 false이어야 함을 검증합니다. | 불리언 타입에 주로 사용 |
@AssertTrue | 값이 true이어야 함을 검증합니다. | 불리언 타입에 주로 사용 |
@Max | 지정된 최대값 이하인지 검증합니다. | 예: @Max(100) |
@Min | 지정된 최소값 이상인지 검증합니다. | 예: @Min(1) |
@DecimalMax | 소수점 포함한 값이 지정된 최대값 이하인지 검증합니다. | 예: @DecimalMax("100.00") |
@DecimalMin | 소수점 포함한 값이 지정된 최소값 이상인지 검증합니다. | 예: @DecimalMin("1.00") |
@Digits | 숫자의 자릿수와 소수 자릿수를 제한합니다. | 예: @Digits(integer=5, fraction=2) |
@Future | 값이 미래 날짜인지 검증합니다. | 날짜 관련 필드에 사용 예약 날짜와 같은 필드에 사용 |
@FuterOrPresent | 값이 현재 또는 미래 날짜인지 검증합니다. | 날짜 관련 필드에 사용 예약 날짜와 같은 필드에 사용 |
@Past | 값이 과거 날짜인지 검증합니다. | 날짜 관련 필드에 사용 생년월일 같은 필드에 사용 |
@PastOrPresent | 값이 현재 또는 과거 날짜인지 검증합니다. | 날짜 관련 필드에 사용 특정 마감일 검증 필드에 사용 |
@Negative | 음수 값인지 검증합니다. | 숫자 값 검증에 사용 |
@NegativeOrZero | 음수 또는 0인지 검증합니다. | 숫자 값 검증에 사용 |
@Positive | 양수 값인지 검증합니다. | 숫자 값 검증에 사용 |
@PositiveOrZero | 양수 또는 0인지 검증합니다. | 숫자 값 검증에 사용 |
@NotBlank | 값이 비어 있지 않고 공백이 아닌지 검증합니다. | 문자열에 사용 (공백 문자열도 허용되지 않음) |
@NotEmpty | 컬렉션, 배열, 문자열 등이 비어 있지 않은지 검증합니다. | 값이 비어 있어선 안 될 때 사용 |
@NotNull | 값이 null이 아닌지 검증합니다. | 모든 타입에 사용 |
@Null | 값이 null이어야 함을 검증합니다. | 특정 필드가 반드시 비어 있어야 할 때 사용 |
@Size | 문자열, 배열, 컬렉션 등의 크기를 검증합니다. | 예: @Size(min=2, max=10) |
@Length | 문자열의 길이를 검증합니다. | @Size와 유사하지만, Hibernate Validator에서 제공 |
@Range | 숫자의 범위를 검증합니다. | 예: @Range(min=1, max=10) |
@UniqueElements | 컬렉션의 요소들이 중복되지 않음을 검증합니다. | Hibernate Validator에서 제공 |
@URL | 값이 URL 형식인지 검증합니다. | 예: "https://example.com" |
@Valid | 객체 내 필드들이 유효성 검사를 받도록 지정합니다. | 주로 컨트롤러 메소드의 파라미터로 전달되는 객체의 유효성을 검증할 때 사용합니다. |
Exception 어노테이션
어노테이션 | 설명 | 추가 정보 |
@ControllerAdvice | 전역적으로 모든 컨트롤러에서 발생하는 예외를 처리하는 클래스에 사용됩니다. | @ExceptionHandler와 함께 사용하여 예외 처리 로직을 재사용할 수 있습니다. |
@RestControllerAdvice | @ControllerAdvice와 동일하지만 @ResponseBody가 포함되어 있어 REST API에서 예외 발생 시 JSON 형태로 응답을 반환합니다. | 주로 REST API 예외 처리를 위한 전역 설정에 사용됩니다. |
@ExceptionHandler | 특정 예외가 발생했을 때 해당 예외를 처리하는 메소드에 사용됩니다. | 메소드에 처리할 예외 타입을 인자로 설정하여 다양한 예외를 처리할 수 있습니다. |
AOP 어노테이션
어노테이션 | 설명 | 추가 정보 |
@Aspect | AOP(Aspect-Oriented Programming)에서 사용되며, 해당 클래스가 하나 이상의 Aspect를 정의하는 클래스를 나타냅니다. | 주로 핵심 비즈니스 로직과는 별도로 공통 관심사를 모듈화하는 데 사용됩니다. |
@Pointcut | Advice가 적용될 Join Point를 정의하는 데 사용됩니다. | 특정 조건에 맞는 메소드를 선택하여 그 메소드에 Advice를 적용할 수 있도록 설정합니다. |
@Before | Pointcut에서 지정한 Join Point 실행 전에 Advice를 적용합니다. | 메소드 호출 전, 전처리 작업을 수행할 때 유용합니다. |
@After | Pointcut에서 지정한 Join Point 실행 후에 Advice를 적용합니다. | 메소드가 호출된 후, 후처리 작업을 수행할 때 사용됩니다. |
@AfterReturing | Pointcut에서 지정한 Join Point가 정상적으로 완료된 후에 Advice를 적용합니다. | 메소드가 정상적으로 실행되고 값을 반환한 후 추가 작업을 수행할 때 사용됩니다. |
@AfterThrowing | Pointcut에서 지정한 Join Point에서 예외가 발생했을 때 Advice를 적용합니다. | 예외 처리를 통해, 특정 예외에 대한 로깅이나 에러 핸들링 작업을 수행할 수 있습니다. |
@Around | Join Point 전후에 Advice를 적용할 수 있도록 하는 가장 유연한 형태의 Advice입니다. | 메소드 호출을 제어하고, 전처리 및 후처리 작업을 모두 수행할 수 있어, 트랜잭션 관리와 같은 복잡한 로직을 처리할 때 유용합니다. |
728x90
'Spring Boot' 카테고리의 다른 글
[Spring Boot] Filter란? 필터를 활용한 요청 및 응답 로깅 (0) | 2024.10.12 |
---|---|
[Spring Boot] Pageable 사용하기 (1) | 2024.10.10 |
[Spring Boot] JPA 연관 관계 설정하기 (1) | 2024.10.10 |
[Spring Boot] MySQL 연결하기 (3) | 2024.10.05 |
[Spring Boot] DTO 유효성 검사를 위한 커스텀 어노테이션 만들기 (3) | 2024.10.03 |