2024. 4. 14. 05:10ㆍSpring Boot/Spring Core
들어가며
어노테이션(Annotations)은 Spring Boot의 주요 기능 중 하나이다.
어노테이션은 어플리케이션의 주요 설정이나 기능을 적용할 때 사용되는데, 마치 주석처럼 사용되기 때문에 다른 명칭이 생겼다.
자주 사용되는 어노테이션을 하위 프레임워크별로 분류해본다.
Spring Core
@Autowired
Spring 어플리케이션에 Bean을 자동으로 등록한다.
이 경우 같은 타입의 Bean이 여러 개 존재하면 충돌이 일어날 수 있는데, 이 경우에는 @Qualifier 어노테이션을 사용한다.
@Bean
Spring Container에 의해 관리될 Bean으로 동작하게 한다.
- name : bean의 이름 설정
- initMethod : bean이 context에 등록될 때 실행될 메서드 결정 (@PostContstruct로 대체 가능)
- destroyMethod : bean이 context에서 해제될 때 실행될 메서드 결정 (@Predestroy로 대체 가능)
@Configuration
public class AppConfig {
@Bean(name = "comp", initMethod = "turnOn", destroyMethod = "turnOff")
Computer computer() {
return new Computer();
}
}
public class Computer {
@PostConstruct
public void turnOn() {
System.out.println("Turn On");
}
@PreDestroy
public void turnOff() {
System.out.println("Turn Off");
}
}
@Component
@ComponentScan이 활성화될 때 component로 등록될 클래스임을 명시한다.
@ComponentScan
@Configuration 어노테이션이 붙은 클래스를 스캔하여 어플리케이션 구성요소에 포함시킨다.
@Configuration
내부에서 @Bean을 정의하고 활용할 클래스로 작동하게 한다.
이 어노테이션이 있는 클래스는 Spring Container에 위임되며, Bean을 생성하고 런타임에 bean을 통해 request를 처리한다.
@PropertySource
@Component와 마찬가지로 Spring 환경에 요소를 등록한다.
@Repository
@Component의 세부 구현체로, DAO클래스에 접근하는 레포지토리 클래스임을 명시한다.
@Required
등록된 Bean에 setter 메서드를 제공한다.
@Service
@Component의 세부 구현체로, 비즈니스 로직을 다루는 서비스 클래스임을 명시한다.
Spring MVC
@Controller
@Component의 내부 구현채로, 웹 요청 핸들러인 컨트롤러 클래스임을 명시한다.
@DeleteMapping
HTTP DELETE 요청을 매핑한다. 정보를 삭제할 때 사용된다.
@RequestMapping(method = RequestMethod.DELETE) 으로 대체 가능하다.
@GetMapping
HTTP GET 요청을 매핑한다. 정보를 조회할 때 사용된다.
@RequestMapping(method = RequestMethod.GET) 으로 대체 가능하다.
@PatchMapping
HTTP PATCH 요청을 매핑한다.
@RequestMapping(method = RequestMethod.PATCH) 으로 대체 가능하다.
@PathVariable
URI에 삽입되는 경로 변수임을 명시한다.
@PostMapping
HTTP POST 요청을 매핑한다. 정보를 생성할 때 사용된다.
@RequestMapping(method = RequestMethod.POST) 으로 대체 가능하다.
@PutMapping
HTTP PUT 요청을 매핑한다. 정보를 생성하거나 수정할 때 사용된다.
@RequestMapping(method = RequestMethod.PUT) 으로 대체 가능하다.
@RequestBody
HTTP 요청에 사용되는 body 파라미터를 MessageConverter를 사용해 바인딩한다.
@RequestHeader
HTTP 요청에 사용되는 헤더 요소(method 파라미터)임을 명시한다.
@RequestMapping
컨트롤러로 들어오는 요청을 라우팅하는 경로를 매핑한다.
@RequestParam
요청에 사용되는 query 파라미터임을 명시한다.
@ResponseBody
요청의 응답값을 직렬화하여 JSON 또는 XML 형태로 바인딩한다.
@RestController
@Controller + @ResponseBody
Spring Transaction Management
@Transactional
메서드의 트랜젝션을 선언한다.
Spring Security
@EnableWebSecurity
@Configuration 어노테이션과 함께 사용되며, Spring Security 설정을 사용할 것임을 명시한다.
Spring Boot
@EnableAutoConfiguration
Spring 어플리케이션이 실행될 때 classpath에 있는 bean, configuration, 메서드를 등록한다.
현재는 대부분 @SpringBootApplication으로 대체되어 사용된다.
@SpringBootApplication
@EnableAutoConfiguration + @ComponentScan + @Configuration
Resources
'Spring Boot > Spring Core' 카테고리의 다른 글
Spring Bean Scope (1) | 2024.04.15 |
---|---|
Spring MVC 사용해보기 (0) | 2024.04.12 |
Spring의 관점 지향 프로그래밍(Aspect-Oriented Programming) (1) | 2024.04.12 |
Spring의 제어 역전(Inversion of Control) (0) | 2024.04.04 |
Spring의 의존성 주입(Dependency Injection) (1) | 2024.04.04 |