본문 바로가기

Spring13

[Spring Data] 도메인 이벤트 (AbstractAggregateRoot) 이 글은 Spring Data Common 에서 지원하는 도메인 이벤트를 정리하기 위한 글입니다. 우선 Spring 에서 지원하는 이벤트 관련 기능을 간단하게 알아보고 (혹시 스프링의 이벤트 관련해서 더 알아보고 싶은 분은 여기를 참고해주세요!) 다음으로 Spring Data Common 에서 지원하는 도메인 이벤트를 예시와 함께 알아보겠습니다. Spring 에서 지원하는 이벤트 관련 기능 Spring은 이벤트 관련 기능을 지원해줍니다. ApplicationEventPublisher - 이벤트 발행자 ApplicationEvent - 이벤트 객체 ApplicationListener - 이벤트 리스너 @EventListener 위의 기능을 활용하면 이벤트를 발행하고, 이벤트 리스너가 이벤트에 대한 처리를 .. 2022. 2. 1.
[Spring] 간단한 파일 업로드/다운로드 서버 구현 백기선님의 Spring Web MVC 강의를 듣고 파일 업로드/다운로드 서버를 직접 만들어보는게 좋겠다고 생각했습니다. 직접 구현하면서 학습한 내용과 느꼈던 생각에 대해 정리하고자 합니다. 환경설정 기본적으로 스프링 부트를 사용하고 스프링 Web MVC를 사용합니다. 템플릿 엔진으로는 thymeleaf를 사용했습니다. 파일 요청을 처리하기 위한 스프링의 요소들 Multipart 요청을 받아서 파일을 업로드한다. Multipart 요청으로 파일을 보내면 MultipartFile로 바인딩이 가능하다. MultipartFile은 파일 업로드시 사용하는 MethodArgument이다. MultipartFile는 DispatcherServlet안에 MultipartResolver가 등록되어있어야한다. Dispat.. 2022. 1. 22.
[Spring] Replication 적용기 - 2 이전 글에서 MySQL에 Replication 환경을 구축했습니다. MySQL에 적용한 Replication 환경은 단순히 source 서버에 데이터 변경이 일어나면 replica 서버에 복사되도록 구축한 것일 뿐입니다. Application에서 추가/삭제/수정은 source 서버, 조회는 replica 서버를 사용하려면 추가적인 코드 구현이 필요합니다. Datasource 설정(yml 또는 properties) 기존에 사용하던 Datasource 설정값은 아래와 같습니다. spring: datasource: driver-class-name: org.h2.Driver url: jdbc:mysql://localhost:3306..생략... username: username password: password.. 2021. 10. 25.
[Spring] Json 응답 gzip 압축하기 - 2 이전 글에서 min-reponse-size 설정값에 대한 문제가 있었습니다. 해결방법을 찾아서 돌아온다고 했지만.. 시도해보려고 한 방법은 두 가지 입니다. 1. 응답값에 대한 Content-Length 헤더를 직접 HttpServletResponse에 넣어준다. 이 방법에는 큰 문제가 있습니다. 이전 글에서도 언급했듯이 Transfer-Encoding 헤더 문서를 보면 Content-Length가 생략된다고 나와있습니다. 생략되는 이유는 rfc 7230 section 2.2.2 을 보면 스펙으로 정해놓을 것을 볼 수 있습니다. (Spring Framekwork 깃허브 저장소에 같은 내용의 이슈가 등록되어 있습니다.) 간단하게 요약하자만 Transfer-Encoding 과 Content-Length 헤더.. 2021. 9. 11.
[Spring] Json 응답 gzip 압축하기 - 1 Json 컨텐츠를 gzip으로 압축해서 보낼 수 있다는것을 알았습니다. (참고자료 : https://www.baeldung.com/json-reduce-data-size) baeldung님의 말에 따르면 Json응답 181kb를 기준으로 gzip 압축을 했을 때 45.9kb로 압축됐다고 합니다. 원래 크기의 25.3%가 돼서 74.7%가 압축된 셈이죠. 설정하는 법은 간단합니다. 설정파일에 아래와 같이 설정할 수 있습니다. // application.yml server: compression: enabled: true mime-types: text/html,text/plain,text/css,application/javascript,application/json min-response-size: 500 .. 2021. 9. 10.