스프링부트 @어노테이션

sun·2026년 1월 6일

2026

목록 보기
2/6

어노테이션

"이 클래스는 이런 역할이다" 라고 Spring에게 알려주는 라벨이다.

Spring은 이 라벨을 보고

  • 언제 만들기
  • 어떻게 관리할지
  • 어디에 주입할지

결정한다.

어노테이션을 붙이지 않을 경우엔?

예)

public class UserService {
}

spring 입장에서는
"이건 그냥 평범한 자바 클래스이구나."
--> 결과 : 객체 안 만듦, 주입 안 됨, 실행 중 에러 발생.

핵심 어노테이션 4종

1. @RestController

@RestController
public class UserController {
}

의미 :

  • 이 클래스는 HTTP 요청받는 역할.
  • 반환 값을 JSON으로 자동 변환.

어노테이션이 없다면?

  • url 매핑 안 됨
  • 프론트에서 호출해도 404

2. @Service

@Service
public class UserService {
}

의미 :

  • 이 클래스는 비즈니스 로직 담당.
  • Spring이 객체로 만들어서 관리.

굳이 Service 사용하는 이유?

  • Controller랑 역할 분리
  • 트랜잭션, 테스트, 유지보수 때문

3. @Repository

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

의미 :

  • DB 접근 담당
  • 예외를 Spring 예외로 변환

※ JPA Repository는 사실상 생략이 가능하지만
의미상 붙여두는 게 좋다.

4. @Entity

@Entity
public class User {
}

의미 :

  • 이 클래스는 DB 테이블
  • Hibernate가 관리

어노테이션이 없다면?

  • 테이블 매핑 안 됨
  • DB 저장 불가

Spring은 어노테이션을 어떻게 찾나?

@SpringBootApplication

@SpringBootApplication
public class DemoApplication {
}

이 코드가 하는 일 :

  • 현재 패키지 기준으로
  • 하위 패키지 전부 스캔
  • 어노테이션 붙은 클래스 전부 등록

※ 그래서 구조가 중요하다.

어노테이션 없으면 DI가 왜 안 되냐?

spring의 사고 흐름 :

  • "Bean으로 등록된 애들만 서로 주입해줄 수 있어"

-> 즉 :

  • @Service -> Bean 등록
  • @Repository -> Bean 등록
  • 생성자에서 요구 -> Spring이 연결

역할별 어노테이션 정리표

계층어노테이션역할
Controller@RestController요청/응답
Service@Service비즈니스 로직
Repository@RepositoryDB 접근
Entity@EntityDB 테이블
설정@Configuration설정 클래스
  • 어노테이션은 Spring 등록 스위치
  • 안 붙히면 Spirng은 모른다.
  • 역할에 맞는 어노테이션이 중요하다.

0개의 댓글