https://meetup.nhncloud.com/posts/148
Spring에서 요청에 따른 부가 응답 추가하기 (1) : NHN Cloud Meetup
Spring에서 요청에 따른 부가 응답 추가하기 (1)
meetup.nhncloud.com
해당 출처를 이용하여 코드 작성했습니다.
해당 블로그에서 MicroService 를 베이스로 사용한 부가 처리 작업 예시가 있어서 읽어보았다.
OOP 의 특성을 최대한 살려서 코드를 작성했다고 하는데, 정리하자면 Interceptor를 이용하여 부가작업을 처리해주는 코드였다
테스트 코드도 있어서 공부하기에 적합할 것 같아
위의 링크 내용을 참조하여 나에게 맞게 코드를 작성해봤다
기본 API 에 기능을 추가한 것으로
구현 방법은
아래와 같다.
기본 API에 attachment 구현하기
attachment를 구현하기 위한 사항들을 Spring의 MVC 요청을 처리하는 흐름에 따라 정리해보았다.
필요한 경우 Interceptor에서 attachment를 해석하고 저장한다
1-1 필요한 경우가 언젠지 정의해야 함.
1-2 attachment를 해석할 class를 정의해야 함(AttachmentType)
attachment는 Request Scope bean에 담아두고, 필요할 때 꺼내 사용(AttachmentTypeHolder class 정의)
Controller에서 객체가 반환되면, 필요한 속성을 추가
3-1 Controller의 로직은 변경하지 않음
3-2 AOP를 통해서, 1-1의 필요한 경우를 파악하여, attachment를 위한 서비스 로직을 실행
3-3 Board 엔티티는 생성, 수정, 삭제 용도로 남겨두고, 읽기 요청에 대해서는 comments, writer 등을 추가할 수 있는 BoardDto로 변환해서 보내자.(CQRS 적용)
위의 내용을 이용해서 나는 내 코드를 작성해보았다.
전체코드는 위에 링크에 있으니 참고!!!
나는, 메일을 보내는 부가 작업을 추가해봤다.
명칭은 그대로 Attachment 로ㅎㅎ
추가 작업을 만들고 싶다면 enum에 추가해주면 될 것 같다
attachment 를 저장할 @RequestScope bean 정의 해두기
어떤 것을 요청했는지 담아둔다
그럼 이제 내 @Attach 애노테이션을 만들어야지
기존 링크에서는 HandlerInterceptorAdapter를 사용하는데 이는 deprecated 되었다.
아래와 같이 바꾸면 된다
@Component
public class AttachInterceptor extends HandlerInterceptorAdapter {
이렇게
AsyncHandlerInterceptor 또는 HandlerInterceptor 를 implements하면 된다
@Component
public class AttachInterceptor implements HandlerInterceptor {
}
@Component
public class AttachInterceptor implements AsyncHandlerInterceptor {
}
작업하다가 문득 캡쳐한거ㅎㅎ
'Web > spring' 카테고리의 다른 글
[Annotation] Spring Core Annotations (0) | 2023.03.30 |
---|---|
[Annotation] Spring Boot Annotations (0) | 2023.03.30 |
[Spring Interceptor] Introduction to Spring MVC HandlerInterceptor (0) | 2023.03.29 |
[Spring JUnit5 Test] 간단한 코드 작성 (0) | 2023.03.21 |
[Spring Junit Test] 2.11. Test Instance Lifecycle (0) | 2023.03.21 |