[Spring Boot] Anotation

wilstiffeun·2025년 4월 27일

백엔드

목록 보기
2/3

Annotation?

'Annotation'은 Java 코드에 메타데이터를 추가하는 방법이다.
가장 자주 접했던 어노테이션이라면 @Override일 것이다.
하지만 단순 표시를 넘어, Spring Framework에서는 Annotation이 시스템 동작에 적극 관여한다.
Spring Boot는 특시 'Convention over Configuration'을 따르기 때문에,
복잡한 설정을 Annotation으로 대체하여 개발자가 비즈니스 로직에 집중하는데 도움을 준다.

Annotation -> 자동화 / 개발 생산성 향상

주요 SpringBoot Annotation


: SpringBoot 개발을 하며 사용할 주요 Annotation

  1. @SpringBootApplication

    • Spring Boot 프로젝트의 시작점
    • 이 어노테이션이 선언된 위치부터 수행되므로 최상단에 선언
    • @Configuration (설정 클래스 선언), @EnableAutoConfiguration (자동 설정 활성화), @ComponentScan (패키지 하위 컴포넌트 탐색) 을 묶은것
    • SpringApplication.run으로 내장되어 있는 WAS 서버 자동 실행됨
  2. @Component

    • 스프링이 관리하는 일반 빈 정의
  3. @Service

    • 비즈니스 로직을 처리하는 서비스 레이어의 빈 정의
  4. @Repository

    • DAO 객체 정의
  5. @Autowired

    • SpringBoot에서 빈을 주입받을때 사용
    • SpringBoot 의존성 주입 방식 : @Autowired, 생성자, setter
  6. @Controller

    • View를 제공하는 controller로 설정
    • API 서비스로 사용하는 경우 @ResponseBody를 사용해 객체 반환
  7. @RestController

    • @Controller + @ResponseBody
    • ResponseBody 역할을 자동적으로 해주는 Annotation
    • JSON을 반환하는 컨트롤러로 만드는 어노테이션
    • 데이터 반환이 주 목적
  8. @RequestMapping

    • HTTP 요청 URL을 특정 메서드에 매핑
    • 요청 받는 형식 미정의 -> 자동으로 Get 설정
  9. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping

    • 각 HTTP Method 요청을 간편하게 매핑
  10. @RequestParam

    • URL Query Parameter 맵핑
    • 파라미터값을 필수로 받고싶은 경우
  11. @Bean

    • 외부 라이브러리로부터 생성한 객체 등록
  12. @Configuration

    • 스프링 설정 클래스
  13. @ConfigurationProperties

    • 설정 값을 객체 단위로 주입

동작원리

  • Annotation은 단순히 코드에 붙여놓는게 아니라는 것 유념할 것
  • SpringBoot는 이 Annotation들을 읽고 실제로 프로그램을 구성한다!

'Annotation 스캔 -> Bean 등록 -> 의존성 주입 -> (필요한 경우) 프록시 처리
1. Reflection API를 사용해서 클래스, 메서드, 필드에 붙은 Annotation을 런타임에 읽는다.
2. 특정 Annotation(@Component, @Service 등)을 찾으면 해당 클래스를 Spring Bean으로 등록한다.
3. @Autowired가 붙은 필드는, 타입에 맞는 Bean을 찾아서 의존성 주입을 한다.

주의할 점

편리한 기능이지만 무분별하게 사용하지 않을 것.

  • Annotation을 아무데나 붙이지 말것
  • 의미를 명확히 구분해서 사용할 것
  • 일관성을 지킬 것

마무리하며...

SpringBoot는 Annotation을 제대로 이해하고 사용하면

  • 개발생산성을 극대화하고
  • 반복적인 설정을 줄여, 비즈니스 로직에 집중하도록 만들고
  • 문제 발생 시 빠른 디버깅이 가능하다.

즉 Annotation을 제대로 이해하는것은 필수조건이다.


[참고자료]
https://www.geeksforgeeks.org/spring-boot-annotations/
https://velog.io/@anak_2/Java-annotations-%EC%9D%B4%EB%9E%80-%EC%84%A4%EB%AA%85-%ED%99%9C%EC%9A%A9
https://rebornbb.tistory.com/entry/SpringBoot-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-Annotation-%EA%B0%9C%EB%85%90-%EB%B0%8F-%EC%A0%95%EB%A6%AC
https://velog.io/@rara_kim/Spring-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98Annotation
https://jjaong34.tistory.com/96#google_vignette
https://www.youtube.com/watch?v=AXZkhKTbbWc

0개의 댓글