Dev/Spring

[Spring] Annotation 간략 정리

창문닦이 2019. 12. 11. 19:49

프로젝트를 진행하면서 스프링에서 다양한 어노테이션이 존재함을 알게 되었다! 간략하게 파악하는 차원에서 틈틈이 정리를 해보았다. 여러 책과 블로그들을 참고하였다. 

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