프로젝트를 진행하면서 스프링에서 다양한 어노테이션이 존재함을 알게 되었다! 간략하게 파악하는 차원에서 틈틈이 정리를 해보았다. 여러 책과 블로그들을 참고하였다.
1. @RestController
○ @Controller + @Responsebody
○ Return 되는 값은 View page를 통해 출력되는 게 아니라 Http Responsebody에 직접 쓰인다.
○ 즉, 객체(VO, DTO)를 반환하면 객체는 application/json 형식의 Responsebody에 직접 작성.
○ 클라이언트에 전달되는 데이터는 대부분 문자열이거나 VO나 컬렉션 형태의 자바 객체
○ 자바 객체로 Response 전달 시, 자동으로 JSON으로 변환하여 처리함.
2. @Autowired
○ Setter 또는 생정자 또는 필드(프로퍼티)에 직접 설정해서 자동으로 의존성 주입.
3. @Component
○ 개발자가 직접 작성한 class를 자바 bean으로 등록
4. @ConfigurationProperties
○어노테이션을 사용해서 key값과 동일한 이름 필드에 자동할당
○ @ConfigurationProperties annotation을 사용하여 key값과 동일한 이름의 필드에 자동 할당
○ Getter, setter 생성 필요
5. @Configuration
○ ApplicationContext 또는 Bean Factory가 사용할 설정 정보라는 표시
○ Factory : 객체의 생성 방법을 결정하고 그렇게 만들어진 object를 반환. 즉, object의 생성/object의 사용 둘의 역할과 책임을 깔끔하게 분리하려는 목적으로 사용
○ ApplicationContext: 일종의 빈 팩토리. 스프링은 별다른 설정을 하지 않으면 내부에서 생성하는 빈 오브젝트를 모두 싱글톤으로 생성한다(싱글톤 레지스트리). 스프링은 여러 번에 걸쳐 빈을 요청하더라도 매번 동일한 오브젝트를 돌려준다
6. @Bean
○ 오브젝트 생성을 담당하는 IoC용 메소드라는 표시
7. @RestControllerAdvice
○ @RestController 에서 발생하는 예외 등을 catch 하는 기능
8. @ExceptionHandler(특정클래스.class)
○ @RestController, @Controller가 적용된 Bean내에서 발생한 예외를 잡아서 하나의 메서드에서 처리해주는 기능.
○ 캐치하고 싶은 예외 클래스를 등록하는데 두 개 이상도 등록이 가능하다.
9. @Expose
○ Object에서 어노테이션이 붙은 해당 값이 Null일 경우, JSON으로 만들 필드를 자동적으로 생략한다.
10. @Async
○ 비동기식으로 메소드 수행
11. @EnableAsync
○ 비동기로 사용할 @Async 가 명시된 bean을 인식
12. @ComponentScan("패키지명")
○ 지정된 패키지 밑에 있는 @Component와 @Configuration 이 붙은 클래스를 스캔해서 bean으로 등록한다.
13. @JsonInclude(Include.NON_NULL)
○ Null 이 아닌 경우에만 직렬화
14. @JsonIgnoreProperties(ignoreUnknown=true)
○ Json 데이터를 객체로 매핑 시 선언되지 않은 프로퍼티가 json에 있으면 오류가 발생한다. 이를 무시하게 해주는 어노테이션
15. @PostMapping
○ @RequestMapping + method={RequestMethod.Post}
○ 매핑이 좀 더 명확해지고 코드량도 줄일 수 있다.
16. @GetMapping
○ @RequestMapping + method={RequestMethod.Get}
○ 매핑이 좀 더 명확해지고 코드량도 줄일 수 있다.
17. @Value("{server.location}")
○ properties 파일에서 특정 값을 읽어와 공통적으로 사용하는 변수에 할당할 때 사용하는 어노테이션.
○ 이렇게 관리를 하는 까닭은 관리의 용이성 때문.
18. @Valid
○ Bean 검증기 어노테이션을 이용해 모델의 값을 검증
19. @Validation
○ 제약조건이 적용될 그룹은 groups 엘리먼트로 지정
○ @Notempty({groups=User.class,Admin.class})
20. @RequestParam("변수명") 자료형 데이터를 담을 변수
○ HttpServletRequest 객체와 같은 역할을 한다. HttpServletRequest.getParameter 메소드를 사용하지 않고 해당 어노테이션 사용 가능
○ 만약, 필수 값인데 지정한 키값이 존재하지 않는다면 에러 발생 - 그래서 DefaultValue를 지정하기도 함
○ required=false 설정 시 필수 값이 아니므로 해당 데이터가 없더라도 오류가 발생하지 않는다
'Dev > Spring' 카테고리의 다른 글
[Spring] @Valid, @Validated 활용 (0) | 2020.07.15 |
---|---|
[Spring] EHCache (0) | 2020.05.06 |
Spring3.0 - Spring WEB MVC (0) | 2019.04.19 |
Spring3.0 - MVC web & MyBatis (0) | 2019.04.18 |
Spring3.0 - MVC web & JDBC 게시판만들기 (0) | 2019.04.18 |