반응형
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 | 31 |
Tags
- junit5
- 배열
- math
- HashMap
- SpringBoot
- string
- 문자열
- 자바
- 테스트자동화
- Array
- Eclipse
- vscode
- java테스트
- ArrayList
- 정규식
- input
- 단위테스트
- 스프링부트
- CSS
- 인텔리제이
- html
- 자바문법
- IntelliJ
- list
- junit
- javascript
- 자바스크립트
- Java
- js
- Visual Studio Code
Archives
- Today
- Total
어제 오늘 내일
[Spring Boot] 필수 어노테이션 총정리 (Cheat Sheet) 📝 본문
스프링 부트를 공부하다 보면 가장 힘든 점 중 하나가 "무슨 어노테이션이 이렇게 많아?" 라는 것입니다.@Controller, @Service, @Repository... 비슷비슷해 보이는데 무슨 차이가 있는지, 언제 뭘 써야 하는지 헷갈리시죠?
오늘은 스프링 부트 개발 시 "이것만 알면 90%는 해결되는" 필수 어노테이션들을 용도별로 정리해 드립니다. '이 포스팅을 즐겨찾기 해두고 사전처럼 꺼내 보세요! 📚
1. 객체 등록 (Bean 등록)
스프링 컨테이너에게 "이 클래스는 내가 관리할 테니까, 메모리에 올려줘"라고 말하는 어노테이션들입니다.
| 어노테이션 | 설명 | 용도 |
@Component |
가장 기본적인 Bean 등록 어노테이션 | 어디에 속하는지 애매한 일반 클래스에 사용 |
@Controller |
웹 요청(View)을 처리하는 컨트롤러 | HTML 파일을 반환할 때 사용 (MVC 패턴) |
@RestController |
데이터(JSON)를 반환하는 컨트롤러 | API 서버 만들 때 사용 (@Controller + @ResponseBody) |
@Service |
비즈니스 로직을 담당하는 클래스 | 트랜잭션 처리, 복잡한 로직 수행 |
@Repository |
DB 접근을 담당하는 클래스 (DAO) | DB 예외를 스프링 예외로 변환해줌 |
@Configuration |
설정 파일임을 명시 | @Bean을 수동으로 등록할 때 사용 |
@Bean |
메서드의 리턴 객체를 Bean으로 등록 | 외부 라이브러리 클래스를 Bean으로 만들 때 사용 |
2. 의존성 주입 (DI)
등록된 Bean을 "가져다 쓸 때" 사용하는 어노테이션입니다.
| 어노테이션 | 설명 | 권장 여부 |
@Autowired |
스프링이 타입에 맞는 Bean을 찾아 자동 주입 | 필드 주입은 권장하지 않음 ❌ |
@RequiredArgsConstructor |
(Lombok) final 필드에 대한 생성자 자동 생성 |
가장 권장하는 방식 (생성자 주입) ⭕ |
[실무 코드 예시]
@Service
@RequiredArgsConstructor // 1. 생성자 자동 생성
public class MemberService {
// 2. @Autowired 없이 final만 붙이면 자동 주입됨
private final MemberRepository memberRepository;
}3. 웹 요청 처리 (Controller)
프론트엔드에서 보낸 데이터를 받을 때 사용하는 어노테이션들입니다. (가장 많이 헷갈리는 부분!)
| 어노테이션 | 설명 | URL 예시 |
@RequestMapping |
기본 경로 설정 (클래스 위에 주로 붙임) | /api/members |
@GetMapping |
조회 요청 (READ) | GET /members |
@PostMapping |
등록 요청 (CREATE) | POST /members |
@PutMapping |
수정 요청 (UPDATE) | PUT /members |
@DeleteMapping |
삭제 요청 (DELETE) | DELETE /members |
@PathVariable |
URL 경로에 있는 값을 꺼낼 때 | /members/{id} ➡️ id 추출 |
@RequestParam |
쿼리 파라미터(?key=value)를 꺼낼 때 | /members?page=1 ➡️ page 추출 |
@RequestBody |
JSON 데이터(Body)를 객체로 받을 때 | 회원가입 시 JSON 데이터 받을 때 |
4. 데이터베이스 (JPA & Transaction)
DB와 관련된 핵심 어노테이션입니다.
| 어노테이션 | 설명 |
@Entity |
이 클래스는 DB 테이블과 매핑된다는 표시 (필수) |
@Id |
Primary Key (PK) 지정 |
@GeneratedValue |
PK 자동 생성 전략 (AUTO_INCREMENT 등) |
@Column |
컬럼 설정 (이름 변경, 길이 제한, Null 허용 여부 등) |
@Transactional |
[매우 중요] 메서드 실행 중 에러가 나면 자동 롤백(Rollback) |
5. 롬복 (Lombok) - 보일러플레이트 제거
코드를 짧게 줄여주는 마법의 도구입니다.
| 어노테이션 | 설명 |
@Getter / @Setter |
Getter, Setter 메서드 자동 생성 |
@NoArgsConstructor |
기본 생성자 생성 (public Class() {}) - JPA 필수 |
@AllArgsConstructor |
모든 필드를 받는 생성자 생성 |
@Builder |
빌더 패턴 자동 생성 (객체 생성을 직관적으로) |
@Slf4j |
로깅 기능 자동 추가 (log.info(...)) |
6. 테스트 (Test)
테스트 코드를 작성할 때 사용합니다.
| 어노테이션 | 설명 |
@SpringBootTest |
통합 테스트. 스프링 컨테이너를 실제로 띄워서 테스트함 (무거움) |
@WebMvcTest |
컨트롤러만 떼어내서 가볍게 테스트함 (단위 테스트용) |
@Test |
(JUnit) 이 메서드는 테스트 메서드임을 명시 |
@DisplayName |
테스트 결과창에 보여줄 한글 이름 설정 |
💡 요약: "이것만은 꼭!" (Best Practice)
- Bean 등록:
@Controller,@Service,@Repository를 용도에 맞게 쓴다. - 의존성 주입:
@Autowired대신@RequiredArgsConstructor(Lombok)를 쓴다. - 데이터 받기:
- URL 경로(
/1)는@PathVariable - 검색 조건(
?q=abc)은@RequestParam - 저장할 데이터(JSON)는
@RequestBody
- URL 경로(
- DB 작업: 데이터를 변경(Insert, Update, Delete)하는 Service 메서드에는 꼭
@Transactional을 붙인다.
반응형
'IT > SpringBoot' 카테고리의 다른 글
| [Spring Boot] SpringBoot Starter가 도대체 뭔가요? 의존성 지옥 탈출! (0) | 2026.03.01 |
|---|---|
| [Spring Boot] 실무편 - 예외 처리의 완성, 전역 예외 처리 (@RestControllerAdvice) (0) | 2026.02.28 |
| [Spring Boot] AOP 심화 분석 - LogAspect 코드 뜯어보기 & 문법 완벽 정리 (0) | 2026.02.27 |
| [Spring Boot] 로그, 노가다 그만! AOP로 요청/응답/시간 자동 기록하기 (0) | 2026.02.27 |
| [Spring Boot] 기초편 - System.out.println은 그만! 로그(Log) 제대로 찍기 (0) | 2026.02.26 |
Comments
