[Spring] 스프링 애너테이션
스프링 애너테이션
@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. 애너테이션
- 적용 기간 : 실행 동안
리포지토리 메서드에서 직접 파인더 쿼리를 선언하는 애너테이션입니다.
Leave a comment