[Spring] Spring Annotation 정리

김민제·2024년 2월 15일

Spring🌱

목록 보기
2/8
post-thumbnail
  • 저는 현재 Spring을 이용하는 사이드 프로젝트에서 백엔드 개발을 하고 있습니다!
  • Spring을 사용하여 개발을 하다보니 사용하는 어노테이션이 점점 많아져 어노테이션을 사용할 때마다 사용 어노테이션을 정리하려고 합니다!
  • 그 말은 즉, 이 게시글은 계속 업데이트가 될 것이라는 말입니다!!
  • 그러면 어노테이션을 정리해보겠습니다!

Annotation

  • @SpringBootApplication
    • Spring Boot의 기본적인 설정해준다.
    • @Configuration, @EnableAutoConfiguration, @ComponentScan의 설정을 한 번에 해준다.
  • @Configuration
    • 자바 기반 설정을 활성화하며 해당 클래스가 xml 설정을 대체하는 스프링 설정 클래스 임을 명시한다.
    • 스프링 컨테이너에서 빈을 관리할 수 있게 해준다.
    • Configuration 클래스는 클래스들 간의 의존성 주입 등의 기능을 수행한다.
  • @Bean
    • 메소드 이름으로 스프링 컨테이너에 빈이 등록된다.
    • @Bean을 사용하는 클래스에는 반드시 @Configuration로 해당 클래스에서 빈을 등록하고자 함을 명시해주어야 한다.
      • 스프링 빈에 등록된 다른 클래스에서도 @Bean을 통해 빈을 등록하는 것도 가능하지만 @Configuration 안에서 @Bean을 사용해야 싱글톤을 보장받을 수 있다.

@Configuration안에서 @Bean이 빈으로 등록되는 과정

  • 스프링 컨테이너는 @Configuration이 붙어있는 클래스를 자동으로 빈으로 등록하고 해당 클래스를 파싱하여 @Bean이 있는 메소드를 찾아서 빈을 생성해준다.
  • @Component
    • 수동으로 빈을 작업하면 빈으로 등록하는 클래스가 많아질수록 시간 소요가 커질 것이기 때문에 스프링에서는 특정 어노테이션이 있는 클래스를 찾아서 빈으로 등록해주는 기능을 제공한다.
    • 스프링은 컴포넌트 스캔을 사용하여 @Component 어노테이션이 있는 클래스를 찾아 빈에 등록해준다.
    • @Component를 가지고 있는 어노테이션도 있는데 @Configuration, @Controller, @Service, @Repository 등이 있다.
    • 위에서도 @Configuration 안에 있는 @Component에 의해 설정 클래스 역시 자동으로 빈으로 등록이 되고, @Bean이 있는 메소드를 통해 빈을 등록해줄 수 있었던 것이다.
    • 스프링은 기본적으로 컴포넌트 스캔을 이용한 자동 빈 등록 방식을 권장한다.
  • @ComponentScan
    • @Component 및 @Configuration, @Controller, @Service, @Repository 등의 어노테이션을 가진 클래스를 Scan하여 빈으로 등록해준다.
  • @Import
    • @Configuration으로 설정한 설정 파일이 두 개 이상 있을 때 사용
    • @Configuration 어노테이션이 선언된 스프링 설정 클래스를 가져온다. @Import({설정클래스.class})와 같이 사용한다.
    • 이를 사용하면 빈 선언 시 실행 순서도 보장되기 때문에 빈 선언 오류도 막을 수 있다.
  • @Repository
    • Spring에서 관리되는 객체임을 표시하기 위해 사용하는 기본적인 annotation인 Component 중 DB나 파일같은 외부 I/O 작업을 처리할 때 사용하는 어노테이션이다.
    • DataBase에 접근하는 method를 가지고 있는 Dao Class에서 쓰인다.
    • JSP
  • @EnableWebMvc
    • Spring Framework에서 여러 Config 값을 알아서 세팅해준다.
      • 스프링 MVC 관련 빈(MessageSource, LocaleResolver 등)들을 자동으로 등록해준다.
      • Controller, Model, View 등 MVC 구성 요소에 대한 설정이 포함한 DispatcherServlet 설정을 위한 기본 설정들이 활성화
    • @EnableWebMvc를 사용하고 추가적인 설정이 필요할 경우 WebMvcConfigurer 인터페이스를 구현하여 기본 동작을 재정의하거나 확장할 수 있다.
    • @Controller 어노테이션이 붙은 클래스를 찾아 요청을 처리합니다.
    • JSP 등 클라이언트에게 보여줄 뷰를 선택하는 역할을 한다.
  • @Controller
    • 해당 클래스가 웹 요청을 처리하는 컨트롤러임을 Spring에게 알려준다.
    • 컨트롤러의 메소드는 웹 요청을 처리한 후, 결과 데이터를 모델에 담아 뷰에 전달하거나 처리 결과를 표시할 뷰의 이름을 문자열로 반환하는 등의 일을 한다.
    • Controller 클래스
      • Controller 클래스는 클라이언트로부터 들어오는 요청을 처리한다.
      • Controller 클래스 안에는 웹 요청에 대응하는 메소드들이 있으며, 이 메소드들은 @RequestMapping 또는 @GetMapping, @PostMapping 등의 어노테이션이 사용된다.
  • @RequestMapping
    • 특정 HTTP 요청을 Java 메서드에 매핑한다.
    • 클래스 레벨과 메서드 레벨에서 모두 사용될 수 있다. 클래스 레벨에 사용하면 해당 클래스의 모든 메소드에 공통 경로가 설정되고 메서드 레벨에서 사용하면 해당 메서드의 개별적인 경로가 설정된다.
    • method 속성을 설정하여 특정 HTTP 메서드에 대한 요청만 처리하도록 설정할 수 있다.
      • @RequestMapping(value="/hello", method=RequestMethod.POST) 같이 설정하면 '/hello' URL에 대한 POST 요청만 해당 메서드에서 처리할 수 있다.
  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping
  • @Service

데이터 관련

  • @Transactional
  • @Data
  • @Entity

테스트 관련

  • @SpringBootTest
  • @Test
profile
블로그 이전했습니다!! 👉 https://alswp006.github.io/

0개의 댓글