3 minute read

스프링 애너테이션


@Autowired

  • 적용 대상 : 1. 생성자, 2. 메서드, 3. 파라미터, 4. 변수, 5. 애너테이션
  • 적용 기간 : 실행 동안

생성자, 필드, Setter 메서드 또는 메서드를 Spring의 의존성 주입 기능에 의해 자동 주입되도록 표시합니다.

JSR-330의 @Inject의 대안으로서 의존성 주입을 인자에 의해 선택할 수 있는 개념이 추가된 애너테이션입니다.

@Bean

  • 적용 대상 : 1. 메서드, 2. 애너테이션
  • 적용 기간 : 실행 동안

메서드가 스프링 컨테이너에서 관리할 빈을 생성함을 나타냅니다.

@Component

  • 적용 대상 : 1. 클래스
  • 적용 기간 : 실행 동안

해당 애너테이션이 달린 클래스가 “구성 요소”임을 나타냅니다. 이러한 클래스들은 애너테이션 기반 구성 및 클래스 탐색을 사용할 때 자동으로 탐지될 후보로 간주됩니다.

@Repository 또는 AspectJ의 @Aspect 애너테이션과 같은 클래스 레벨 애너테이션 또한 구성 요소로 식별되는 것으로 간주 될 수 있습니다.

@ComponentScan

  • 적용 대상 : 1. 클래스
  • 적용 기간 : 실행 동안

@Configuration 클래스와 함께 사용되어, 컴포넌트 탐색 방법을 구성합니다. 스프링 XML의 <context:component-scan> 요소와의 병렬 지원을 제공합니다.

@Configuration

  • 적용 대상 : 1. 클래스
  • 적용 기간 : 실행 동안

해당 클래스가 하나 이상의 @Bean 메소드를 선언하고 있고, 해당 Bean의 정의 또는 서비스 요청을 만들기 위해 프로그램이 실행되는 동안 스프링 컨테이너에 의해 처리됨을 나타냅니다.

@Controller

  • 적용 대상 : 1. 클래스
  • 적용 기간 : 실행 동안

해당 클래스가 “컨트롤러”임을 나타냅니다.

이 애너테이션은 @Component의 특수화로 사용되어 클래스 경로 탐색을 통해 해당 클래스를 자동 탐지할 수 있습니다.

일반적으로 @RequestMapping 기반의 요청 핸들러 메서드와 함께 사용됩니다.

@GetMapping

  • 적용 대상 : 1. 메서드
  • 적용 기간 : 실행 동안

HTTP GET 요청을 특정 핸들러 메서드에 매핑하기 위한 애너테이션 입니다.

@RequestMapping(method = RequestMethod.GET)과 동일한 역할을 하는 애너테이션입니다.

@PostMapping

  • 적용 대상 : 1. 메서드
  • 적용 기간 : 실행 동안

HTTP POST 요청을 특정 핸들러 메서드에 매핑하기 위한 주석입니다.

@RequestMapping(method = RequestMethod.POST)과 동일한 역할을 하는 애너테이션입니다.

@PutMapping

  • 적용 대상 : 1. 메서드
  • 적용 기간 : 실행 동안

HTTP PUT 요청을 특정 핸들러 메서드에 매핑하기 위한 주석입니다.

@RequestMapping(method = RequestMethod.PUT)과 동일한 역할을 하는 애너테이션입니다.

@Repository

  • 적용 대상 : 1. 클래스
  • 적용 기간 : 실행 동안

해당 클래스가 “리포지터리”임을 나타냅니다.

스프링 2.5부터 이 애너테이션은 @Component의 특수화 역할을 수행하여 클래스 경로 탐색을 통해 해당 클래스를 자동으로 감지할 수 있도록 합니다

@RequestBody

  • 적용 대상 : 1. 파라미터
  • 적용 기간 : 실행 동안

메서드의 파라미터를 나타내는 이 애너테이션은 웹 요청의 Body와 연결되어야 합니다.

애너테이션처리된 핸들러 메서드에 의해 사용됩니다.

@RequestMapping

  • 적용 대상 : 1. 클래스, 2. 메서드
  • 적용 기간 : 실행 동안

요청을 처리하는 클래스 내에서 웹 요청을 메서드에 매핑하기 위한 애너테이션입니다.

@RestController

  • 적용 대상 : 1. 클래스
  • 적용 기간 : 실행 동안

@Controller 및 @ResponseBody의 역할을 수행하는 애너테이션입니다.

이 애너테이션 포함하는 클래스은 @RequestMapping 메서드가 기본적으로 @ResponseBody 개념을 가정하는 컨트롤러로 처리됩니다.

@Service

  • 적용 대상 : 1. 클래스
  • 적용 기간 : 실행 동안

해당 클래스가 “서비스 객체”임을 나타냅니다

이 애너테이션은 @Component의 특수화 역할을 하며, 클래스 경로 탐색을 통해 해당 클래스를 자동으로 탐지할 수 있습니다.



스프링 부트 애너테이션


@SpringBootApplication

  • 적용 대상 : 1. 클래스
  • 적용 기간 : 실행 동안

하나 이상의 @Bean 메서드를 선언하고, 자동 구성과 컴포넌트 탐색을 일으키는 구성 클래스를 나타낸다.

@Configuration, @EnableAutoConfiguration 및 @ComponentScan을 적용하는 것과 동일한 애너테이션입니다.

@SpringBootTest

  • 적용 대상 : 1. 클래스
  • 적용 기간 : 실행 동안

스프링 부트 기반 테스트를 실행하는 테스트 클래스에서 적용할 수 있는 애너테이션입니다.



스프링 시큐리티 애너테이션


@EnableMethodSecurity

  • 적용 대상 : 1. 클래스
  • 적용 기간 : 실행 동안

스프링 Security의 Method Security를 활성화합니다.

@EnableWebSecurity

  • 적용 대상 : 1. 클래스
  • 적용 기간 : 실행 동안

이 애너테이션을 @Configuration 클래스에 적용하면 SecurityFilterChain 빈을 노출하여 모든 WebSecurityConfigurer에 SpringSecurity 구성을 정의할 수 있습니다:

@PreAuthorize

  • 적용 대상 : 1. 메서드, 2. 클래스
  • 적용 기간 : 실행 동안

메서드 호출이 허용되는지 여부를 결정하기 위해 평가되는 메서드 접근 제어 식을 지정하기 위한 애너테이션입니다.



스프링 Data JPA 애너테이션


@EnableJpaAuditing

  • 적용 대상 : 1. 클래스
  • 적용 기간 : 실행 동안

JPA 작업 감사를 활성화하기 위한 애너테이션입니다.

@Query

  • 적용 대상 : 1. 메서드, 2. 애너테이션
  • 적용 기간 : 실행 동안

리포지토리 메서드에서 직접 파인더 쿼리를 선언하는 애너테이션입니다.

Categories:

Updated:

Leave a comment