본문 바로가기
반응형

Spring6

[spring boot] 스프링 스케줄러 사용해보기 스프링 부트로 기능을 구현하다 보니 일정시간에 작업을 진행해야 하는 경우가 생긴다. 예를 들어 매일 12시에 맞춰 그날로부터 며칠이상 존재했던 데이터를 삭제하는 경우라던지, 새로운 데이터를 구해야 하는 것(전일 기준 인기 순위와 같은...)과 같은 작업을 진행해야 할 필요가 생긴다. 그래서 어떻게 하면 기능을 구현할 수 있을지 찾아본 결과 크게 두가지 방법으로 진행할 수 있는 것으로 확인했다. 바로 quartz와 spring scheduler이다. quartz는 조금 설정방법이 어려운 대신 섬세하게 설정이 가능하며 스케줄러 간의 클러스팅이라던가 후처리기능이 더 뛰어나다. 이번에는 단순하게 일정 기간 이후에 데이터를 삭제하는 작업을 진행하게 되어 간단하게 spring scheduler를 사용해보려고 한다... 2023. 10. 19.
Java 로깅 알아보기 2 - logback 2023.08.04 - [자바(Java)] - Java 로깅 알아보기 1 - Logging이란 기본적인 내용은 이전 글을 통해 확인하는 것을 추천! Log4j 구조 Logger : 로그의 주체, 로그의 메시지 전달, 특정 패키지 안의 특정 레벨 이상만 출력 Appender: 어디에 출력할지에 대해 기술 Encoder: 어떻게 출력할지에 대해 기술 Logback 환경 설정 (logback.xml) resources 하단에 logback.xml 파일 생성 %d{yyyy-MM-dd HH:mm:ss} %highlight([%-5p]) --- [%F]%M\\(%L\\) : %m%n 속성 설정 appender 부분은 출력위치를 결정해 주고 (STDOUT), Appender로 사용할 클래스를 설정해 주는 부분이다. .. 2023. 8. 4.
필터(filter), 인터셉터(interceptor), AOP(Aspect-Oriented Programming) 살펴보기 Spring에서 필터와 인터셉터 그리고 AOP는 전부 공통 로직을 분리하여 처리하기 위해서 사용하기 위해서 사용되는 기능이다. 하지만 사용방법과 적용되는 위치의 차이가 있기 때문에 알맞게 사용해야 한다. 큰 구조는 Spring mvc Request 라이프 사이클을 통해 확인할 수 있다. ( AOP는 표시되어 있지 않지만...) 필터(Filter): 필터는 서블릿 컨테이너(예: Tomcat, Jetty)에서 요청과 응답을 가로채는 기능이다. 주로 요청과 응답의 헤더를 수정하거나 인코딩을 처리하는 등의 작업에 사용된다. Spring의 javax.servlet.Filter 인터페이스를 구현하여 사용한다. 필터는 web.xml에 등록하여 적용되고, Spring Boot에서는 FilterRegistrationBe.. 2023. 7. 22.
[Spring boot] war로 배포하기, SpringBootServletInitalizer 현재는 spring boot에 Tomcat이 내장되어 있는 Embedded Tomcat형태의 jar파일로 빌드되어 단순히 실행하면 되지만 jsp를 사용하는 웹애플리케이션 같은 경우에는 war로 빌드하여 Tomcat이나 Jetty와 같은 외부 서블릿 컨테이너를 통해서 배포를 해야 했는데 이경우에 SpringBootServletInitalizer를 상속받아서 실행되도록 하여야 한다. 즉, SpringBootServletInitalizer를 상속받는 이유는 웹 애플리케이션 서버를 war형태로 배포하기 위해서 사용한다. jar vs war 그렇다면 war와 jar는 어떤 차이가 있는건지도 알아보았다. 먼저 두 파일 전부 애플리케이션을 간단하게 배포하고 실행시킬 수 있도록 관련파일들을 패키징 해주는 것이 목적이다.. 2023. 7. 22.
[JPA] 페이징 처리, Paging (Pagination, Infinite Scroll) 페이징 처리 페이지네이션? 무한 스크롤? 페이징 처리는 한 번에 모든 데이터를 가져오면 많은 시간이 걸리기 때문에 단위를 나눠서 데이터를 가져올 수 있도록 단편화시키는 것을 의미한다. 구글만 보더라도 아래와 같이 페이지네이션을 처리해 두었다. 위와 같이 페이지를 나누어 사용자가 골라 접근할 수 있도록 만든 것을 페이지네이션이라고 부른다. 웹페이지를 이용할 때 흔하게 볼 수 있는 모습이다. 반면 요즘에는 SNS 같은 곳을 보면 이러한 숫자방식의 페이지네이션이 아닌 스크롤을 모두 내리면 추가적인 콘텐츠를 불러오는 방식의 무한 스크롤(infinite scroll) 방식도 많이 사용한다. 하지만 이러한 방식의 차이는 어떻게 보여주냐의 차이일 뿐 내부적인 로직은 거의 흡사하다. 기본적인 동작 원리는 조회할 때 얼.. 2023. 6. 21.
[Spring boot] 설정 정보(application.yml / properties) 분리시키기 - spring profiles 사용 이유 현재 진행 중인 프로젝트에서 오라클 클라우드 프리티어를 이용해서 배포 테스트를 진행하게 되었다 현재 application.yml을 서브 모듈 ( https://teching.tistory.com/144 )을 사용해서 관리하고 있는 상황이었다. spring boot 설정 정보 외부에서 관리하기 2 - submodule https://teching.tistory.com/143 [spring boot 설정 정보 외부에서 관리하기 Spring boot 설정 정보 관리하기 서버를 github를 사용해서 형상관리를 할 생각인데 레파지토리를 public으로 열어두려고 한다... 공개 teching.tistory.com 오라클 클라우드의 DB는 특이하게 지갑을 이용해서 접속해야 하는데 그 경로를 지정해주어야.. 2023. 6. 12.
반응형