매번 같은 형태의 데이터를 각 메뉴마다 지속적으로 사용한다면큰 부하는 아니지만 DB에 수시로 접근하여 조회를 해와야 한다. 여기서 복잡도가 올라가게 되고 조회해오는 항목들이 방대해지면 이제 점차적으로 DB에 부하를 야기하게 될 것이다. 그래서 반복 호출 되는 이러한 것들을 기존에 사용하고 있는 Redis 활용하여 cache 로 사용하고자 한다. 심플하게 한번 적용해보자Redis data 를 build.gradle 에 추가한다.implementation 'org.springframework.boot:spring-boot-starter-data-redis' application 프로퍼티에 redis 를 설정한다(필자는 기존에 redis session을 사용하고 있어서 되어있었다.)spr..
운영서버에 로그파일을 계속 만들게 되면언젠가 용량이 너무 많아서 디스크제한에 문제가 발생하게 된다. 그래서 적당한 시점에 로그파일을 압축한 뒤 보관하거나오래된 로그파일을 삭제하도록 설정해줘야 할 필요가 있다. 나는 간단하게 로그파일이 기준 용량을 넘으면 압축해서 보관하고 히스토리 갯수가 일정갯수 넘어가면 지우게끔 처리하였다. // application.yml...---spring: config: activate: on-profile: was1 logging: level: root: info file: name: /data/log/was1.log logback: rollingpolicy: max-file-size: 10MB max-hi..
Springboot 프로젝트 진행 중에 외부 라이브러리를 빌드시스템 없이 수동 추가하게 되어 남겨본다. 프로젝트 root 하위에 libs 폴더를 만들고 수동 등록할 jar 파일을 추가하였다. build.gradle 에 아래와 같이 작성하고 gradle refresh 해주면 끝. 나는 libs 폴더 하위 라이브러리를 전부 보라고 지정했다. implementation fileTree(dir: 'libs', includes: ['*.jar']) 파일별로 단독 지정하고 싶으면 아래와 같이 작성해줘도 된다.implementation files('libs/ibsheet8-1.1.4.jar') gradle dependency 하위에 directory 'libs' 가 생성된 것을 확인 ..
통계 집계한 데이터를 조회하여 table 에 그려주는 과정에서중간중간마다 데이터 백분율을 작성해 주고 싶었다. thymeleaf each 를 사용해서 조회한 데이터를 아래와 같이 그렸다. 구분1월2월3월4월5월6월7월8월9월10월11월12월합계접수 예약 실제로는 구분 앞에 대분류, 중분류가 더 있어서 위와 같은 형태가 여러개 그려지게 되는데접수/예약/(예약율)/접수/예약/(예약율)/... 이렇게 중분류가 바뀌는 시점에 예약율 행을 추가해주고 싶었다. 처음엔 서비스단에서 데이터 가공을 해서 위코드 그대로 쓸까 했으나thymeleaf 에서 해결 할 수 있지 않을까 싶어서 타임리프 유틸들을 조합해서 해결해 보았다. 접..
프로젝트의 결과물이 거의 나옴에 따라 운영서버에 배포해서 이것저것 보는 중에 이상하게 리소스파일들 (js, font, css ) 을 계속 로드해오는 것을 확인했다. 분명 로컬에서는 느끼지 못했던 현저한 속도저하를 느꼈다. 우씨 로컬에서도 느꼈으면 해결하고 배포했을 텐데... 뭐지 싶어 리소스들 response header 를 봤더니 cache-control이 죄다 no-store 로 되어있는 것이 아닌가... no-store 는 캐싱을 하지 않겠다 이기 때문에 매번 리소스를 로드하게 된다. 리소스 캐시컨트롤 설정은 여러방법이 있는데 나는 간단한 것을 좋아하여 application.yml 에 리소스 캐시 설정을 추가했다. spring: web: resources: cache: cachecontrol: no..
SpringBoot 에 h2 를 연결해서 JPA를 사용하는 기초 방법을 작성해본다. 사내에는 보통 구축된 DB가 있기 때문에 DB가 정해지지 않은 테스트 시 빼고는 잘 사용할 일이 없었는데 스터디하다가 연결하게 되어 남겨본다. 프로젝트 생성 IntelliJ 2023.3.4 를 사용하니까 이제 spring 프로젝트가 3버전으로 생성되어 jdk8 버전 프로젝트를 자동 생성할 수 없는 것 같다. 바꾸고 싶다면 상위버전으로 생성뒤에 다운그레이드 해야 할 듯 싶다? 다음으로 넘어가서 디펜던시를 추가하자 간단하게 필요한 녀석들만 추가해주고 프로젝트를 생성하자 아래와 같이 build.gradle 이 생성될 것이다. plugins { id 'java' id 'org.springframework.boot' version..