어노테이션은
주석
이라는 사전적 의미가 있다. JDK5부터 등장했으며메타데이터(데이터를 위한 데이터)
라고도 불린다.
클래스나 메서드, 변수 등을 선언할 때@
를 붙여서 사용한다.
어노테이션은 컴파일러에게 정보를 알려주거나, 실행할 때 별도의 처리가 필요할 때 등 매우 다양한 용도로 사용할 수 있다.
자바에서 가장 쉽게 볼 수 있는 어노테이션의 예시로@Override
가 있다.
해당 메서드가 부모클래스에 있는 메서드를 오버라이드했다는 것을 컴파일러에게 알려준다. 만약 메서드를 제대로 오버라이드하지 않았다면 에러가 발생한다.
@PersistenceContext
스프링 JPA EntityManager 를 주입시키기 위해 어노테이션
@SpringBootApplication
Spring boot application으로 설정, 이 안에 무수히 많은 설정들이 종합적으로 설정되어 있다. run 메서드 안에는 ApplicationContext가 bean 객체들을 관리하게끔 코드가 작성되어 있다!
@Controller
view를 제공하는 controller로 설정
@RestController
REST API 를 제공하는 controller로 설정
@RequestMapping
URL주소를 맵핑
@GetMapping
Http GetMethod URL 주소 맵핑
@PostMapping
Http PostMethod URL 주소 맵핑
@PutMapping
Http PutMethod URL 주소 맵핑
@DeleteMapping
Http DeleteMethod URL 주소 맵핑
@RequestParam
URL Query Parameter 맵핑
@RequestBody
Http Body를 파싱하는 맵핑
@Valid
POJO java class의 검증
디팬더시 validation 이 필요하다!
@Configuration
1개 이상의 bean을 등록할 때 설정, 안에 @Component
가 들어있음.
어플리케이션이 동작할 때 제일 먼저 찾는 bean.
@Bean
1개의 외부 라이브러리로부터 생성한 객체를 메서드 단위로 등록 시 사용
@Component
=> @Controller
, @Service
, @Repository
1개의 Class 단위로 bean으로 등록할 때 사용
@ComponentScan
현재 이 어노테이션이 놓아진 클래스를 기준으로, 스프링 프레임워크가 다루는 객체 bean으로 지정할 범위를 정해놓는 어노테이션
@Value
application 설정 파일에서 값을 가져올 때 사용
@ConfigurationProperties
@Value
어노테이션의 묶음 단위로 설정파일을 가져올 때 사용!
@Autowired
DI(필드주입)을 위한 곳에 사용, 테스트코드에서는 이 방식을 사용해야 한다.
@Qualifier
@Autowired 사용시 bean이 2개 이상 일때 명시적 사용
@Resource
@Autowired + @Qualifier 의 개념으로 이해
@PostConstruct
초기화
@PreDestroy
종료
: javax.annotation.PostConstruct 이다. 스프링에 종속적인 기술이 아니라 JSR-250
라는 자바 표준이다. 따라서 스프링이 아닌 다른 컨테이너에서도 동작한다
@RestControllerAdvice
전역 예외처리 설정
@ExceptionHandler
@Aspect
AOP 적용시 사용
@Before
AOP 메서드 호출 이전 지정
@After
AOP 메서드 호출 이후 지정 예외 발생 포함
@Around
AOP 이전/이후 모두 포함 예외 발생 포함
@AfterReturning
AOP 메서드의 호출이 정상일 때 실행
@AfterThrowing
AOP시 해당 메서드가 예외 발생시 지정