Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 접근제어지시자
- Java데이터 타입
- 시스템 환경 변수 편집
- 컴파일
- 인텔리제이 기초 설정
- continue문
- java변수
- While
- 집합관계
- 반복문
- for문
- JAVA객체지향
- 상수
- JAVA기초
- 포함관계
- 메서드 오버로딩
- multi-threading
- OPP개념
- Java
- 메서드
- break문
- 연관관계
- 생성자
- 형 변환
- function
- Thread
- this예약어
- IntelliJ IDEA
- 자바 멀티스레딩
- 인텔리제이 한글 깨짐 해결법
Archives
- Today
- Total
최원종의 개발 블로그
Spring Boot 필수 어노테이션(Annotation) 총정리 본문
어노테이션 이미지 보기⬇️
어노테이션 한 번에 보기⬇️
더보기
[어노테이션] | [핵심 의미 및 역할] | [비고 및 상세 설명]
@SpringBootApplication | Spring boot application 으로 설정 | 자동 설정 및 컴포넌트 스캔 활성화
@Controller | View를 제공하는 controller로 설정 | Mustache나 HTML 화면 반환 시 사용
@RestController | REST API 를 제공하는 controller로 설정 | JSON 데이터 및 응답 바디 직접 반환
@RequestMapping | URL 주소를 매핑 | 클래스 레벨에서 공통 경로 묶기
@GetMapping | Http GetMethod URL 주소 매핑 | 데이터 조회 요청 처리
@PostMapping | Http PostMethod URL 주소 매핑 | 데이터 등록 및 가입 처리
@PutMapping | Http PutMethod URL 주소 매핑 | 데이터 전체 수정 처리
@DeleteMapping | Http DeleteMethod URL 주소 매핑 | 데이터 삭제 처리
@RequestParam | URL Query Parameter 매핑 | ?id=1 같은 파라미터 값 수신
@RequestBody | Http Body를 Parsing 매핑 | JSON 요청 데이터를 DTO로 변환
@Valid | POJO Java class의 검증 | 유효성 검사 필터링
----------------------------------------------------------------------------------------------------------------------
@Configuration | 1개 이상의 bean을 등록 할 때 설정 | 자바 기반 설정 클래스에 선언
@Component | 1개의 Class 단위로 등록 할 때 사용 | IoC 컨테이너에 싱글톤 객체로 등록
@Bean | 1개의 외부 library로부터 생성한 객체 등록 시 사용 | 개발자가 제어 못 하는 외부 객체 생성용
@Autowired | DI를 위한 곳에 사용 | 타입 기반 자동 의존성 주입
@Qualifier | @Autowired 사용시 bean이 2개 이상일 때 명시적 사용 | 주입 대상 빈의 이름을 지정
@Resource | @Autowired + @Qualifier 의 개념으로 이해 | 자바 표준 규격 주입 방식
----------------------------------------------------------------------------------------------------------------------
@Aspect | AOP 적용시 사용 | 공통 관심사 모듈 클래스 선언
@Before | AOP 메소드 이전 호출 지정 | 비즈니스 로직 시작 전 수행
@After | AOP 메소드 호출 이후 지정 예외 발생 포함 | 로직 종료 후 수행 (무조건 실행)
@Around | AOP 이전/이후 모두 포함 예외 발생 포함 | 실행 전후 흐름 및 시간 측정에 사용
@AfterReturning | AOP 메소드의 호출이 정상일 때 실행 | 결과 반환이 성공한 시점에 작동
@AfterThrowing | AOP시 해당 메소드가 예외 발생시 지정 | 에러가 터졌을 때 예외 처리 공통화
----------------------------------------------------------------------------------------------------------------------
@Entity | DB 테이블과 매핑되는 객체로 설정 | JPA 영속성 컨텍스트 관리 대상
@Id | 테이블의 기본키(PK) 지정 | 데이터 구분을 위한 고유 식별자
@GeneratedValue | 기본키(PK) 생성 전략 설정 | IDENTITY 등 DB 전략에 위임
@Column | 객체 필드와 테이블 컬럼 매핑 | 제약조건(nullable, unique) 정의
@Transient | DB 컬럼 매핑에서 제외 | 영속화하지 않는 임시 변수 처리
@Transactional | 데이터베이스 트랜잭션 범위 지정 | 예외 발생 시 전격 롤백 처리
@Getter / @Setter | Getter 및 Setter 메소드 자동 생성 | 롬복 라이브러리 기능 사용
@NoArgsConstructor | 파라미터가 없는 기본 생성자 생성 | JPA 기술 명세 상 필수 요구 항목
@AllArgsConstructor | 전체 필드 대상 생성자 생성 | 모든 속성을 채우는 생성자 제공
@RequiredArgsConstructor | final이 붙은 필드 대상 생성자 생성 | 스프링에서 권장하는 생성자 주입용
@Builder | 빌더 패턴 기법 코드 자동 생성 | 가독성 높은 객체 생성 디자인 제공
1. 요청 처리 및 컨트롤러 어노테이션 (Web Layer)
클라이언트의 요청(HTTP Request)을 가장 먼저 맞이하고 데이터를 매핑하는 역할
@SpringBootApplication : 스프링 부트 애플리케이션의 시작점 설정 (자동 설정 및 컴포넌트 스캔 활성화)
@Controller : View(HTML/Mustache)를 제공하는 컨트롤러로 설정 (서버 사이드 렌더링에 사용)
@RestController : REST API(JSON/XML 데이터)를 제공하는 컨트롤러로 설정 (@Controller + @ResponseBody)
@RequestMapping : 클래스나 메서드에 대표 URL 주소를 매핑 (공통 경로 그룹화)
@GetMapping : HTTP GetMethod URL 주소 매핑 (데이터 조회 시 사용)
@PostMapping : HTTP PostMethod URL 주소 매핑 (데이터 등록 및 생성 시 사용)
@PutMapping : HTTP PutMethod URL 주소 매핑 (데이터 전체 수정 시 사용)
@DeleteMapping : HTTP DeleteMethod URL 주소 매핑 (데이터 삭제 시 사용)
@RequestParam : URL Query Parameter 또는 폼 데이터 매핑 (?id=1 등)
@RequestBody : HTTP Body(JSON 데이터)를 자바 객체로 파싱 및 매핑
@Valid : POJO Java class의 유효성 검증 (DTO 필드 값 체크)
2. 객체 관리 및 의존성 주입 (IoC / DI Layer)
@Configuration : 1개 이상의 bean을 자바 코드로 등록할 때 설정 파일에 사용
@Component : 1개의 Class 단위로 IoC 컨테이너에 빈을 등록할 때 사용 (싱글톤 패턴)
@Bean : 1개의 외부 library로부터 생성한 객체를 등록 시 사용 (@Configuration 메서드에 부여)
@Autowired : 의존성 주입(DI)이 필요한 곳에 사용 (스프링이 자동으로 객체 연결)
@Qualifier : @Autowired 사용 시 동일 타입 bean이 2개 이상일 때 명시적 구분 사용
@Resource : @Autowired + @Qualifier 의 개념으로 이해 (이름 기반 자바 표준 주입)
3. 관점 지향 프로그래밍 (AOP Layer)
@Aspect : AOP 적용 시 공통 기능 클래스임을 선언할 때 사용
@Before : 핵심 비즈니스 로직 메서드 실행 이전에 호출되도록 지정
@After : 핵심 비즈니스 로직 메서드 호출 이후에 실행 (예외 발생 여부 상관없음)
@Around : 핵심 비즈니스 로직 메서드 이전/이후 모든 시점을 포함하여 예외 발생까지 제어
@AfterReturning : AOP 대상 메서드의 호출이 정상적으로 성공하여 종료되었을 때만 실행
@AfterThrowing : AOP 대상 메서드 실행 중 예외(Error)가 발생했을 때만 실행되도록 지정
4. 데이터베이스 및 JPA / 롬복 관련
@Entity : 데이터베이스 테이블과 매핑되는 영속성 객체(도메인)임을 선언
@Id : 테이블의 기본키(PK, Primary Key) 필드를 지정
@GeneratedValue : 기본키(PK) 생성 전략 설정 (MySQL의 auto_increment 등)
@Column : 객체의 필드를 테이블 컬럼과 매핑 (nullable, unique, length 등 제약조건 설정)
@Transient : 특정 필드를 DB 컬럼 매핑에서 제외하고 메모리에서만 임시로 쓸 때 사용
@Transactional : 메서드나 클래스를 하나의 트랜잭션 단위로 묶어 자동 롤백/커밋 처리
@Getter / @Setter : 필드들의 Getter 및 Setter 메서드를 컴파일 시점에 자동 생성
@NoArgsConstructor : 파라미터가 없는 기본 생성자를 자동 생성 (JPA 엔티티 필수)
@AllArgsConstructor : 클래스의 모든 필드를 파라미터로 받는 생성자를 자동 생성
@RequiredArgsConstructor : final이나 @NonNull 필드만 골라내어 생성자 자동 생성 (생성자 주입 권장)
@Builder : 객체 생성을 유연하고 안전하게 돕는 빌더 패턴 코드 자동 생성
팁💡: POJO란
Plain Old Java Object 의 약어로, 특정한 제한이나 규약이 없는 일반적인 자바 객체를 가리킵니다.
즉, POJO 클래스는 특정 프레임워크나 라이브러리에 종속되지 않고 순수하게 자바로 작성된 클래스를 의미합니다.
@Component 어노테이션은 주로 이러한 단순한 POJO 클래스에 사용됩니다.
예를 들어, 서비스나 레포지토리와 같은 비즈니스 로직이나 데이터 액세스 로직을 수행하는 클래스들은
보통 @Service나 @Repository 어노테이션을 사용하여 스프링 빈으로 등록됩니다.
하지만 그 외의 일반적인 도메인 모델이나 유틸리티 클래스와 같은 경우에는 특별한 어노테이션 없이도
그 자체로 스프링 빈이 될 수 있습니다.
따라서 @Component 어노테이션은 이러한 일반적인 클래스를 스프링 빈으로 등록할 때 사용됩니다.
이렇게 등록된 빈은 스프링 애플리케이션 내에서 주입되거나 사용될 수 있습니다.
'Spring boot 입문' 카테고리의 다른 글
| V5-2 서비스 계층 만들어 보기 (BoardService, UserService) + 리팩토링 (0) | 2026.05.20 |
|---|---|
| 스프링부트 V5 JPARepository + Service(JpaRepository 인터페스와 Optional 타입) (0) | 2026.05.19 |
| V4-3 intercepter 활용 (인증검사 공통 처리) (0) | 2026.05.18 |
| V4-2 에러 컨트롤러 및 커스텀 예외 처리 (@ControllerAdvice 활용) (0) | 2026.05.18 |
| V4 (인증과 권한 처리와 예외 처리)-1 에러 페이지 만들기 (0) | 2026.05.15 |


