Spring 여러가지 어노테이션

devdo·2021년 12월 30일
0

Spring

목록 보기
8/10
post-thumbnail
post-custom-banner

Spring Annotations


✅참고) 어노테이션이란?

어노테이션은 주석이라는 사전적 의미가 있다. JDK5부터 등장했으며 메타데이터(데이터를 위한 데이터)라고도 불린다.
클래스나 메서드, 변수 등을 선언할 때 @를 붙여서 사용한다.
어노테이션은 컴파일러에게 정보를 알려주거나, 실행할 때 별도의 처리가 필요할 때 등 매우 다양한 용도로 사용할 수 있다.
자바에서 가장 쉽게 볼 수 있는 어노테이션의 예시로 @Override 가 있다.
해당 메서드가 부모클래스에 있는 메서드를 오버라이드했다는 것을 컴파일러에게 알려준다. 만약 메서드를 제대로 오버라이드하지 않았다면 에러가 발생한다.


DB 관련

@PersistenceContext
스프링 JPA EntityManager 를 주입시키기 위해 어노테이션


Spring Http

@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


AOP

@Aspect
AOP 적용시 사용

@Before
AOP 메서드 호출 이전 지정

@After
AOP 메서드 호출 이후 지정 예외 발생 포함

@Around
AOP 이전/이후 모두 포함 예외 발생 포함

@AfterReturning
AOP 메서드의 호출이 정상일 때 실행

@AfterThrowing
AOP시 해당 메서드가 예외 발생시 지정

profile
배운 것을 기록합니다.
post-custom-banner

0개의 댓글