
구 프로젝트에서 신규 프로젝트로 데이터를 반영해줘야 하는 경우가 생겨 HTTP API 호출 클래스인 AsyncRestTemplate 을 사용하려한다. 원래는 Spring5 부터 deprecated 되어 Webclient를 사용했지만, 구 프로젝트가 spring4.3.30 인 관계로 쓸때없는 공수를 투입하지 않기 위해 AsyncRestTemplate 클래스를 활용하려고 한다. AsyncRestTemplate 를 사용하여 비동기 호출을 하려고 한다. 여러 메뉴에서 해당 기능을 활용하기 위해 각 메뉴의 DTO를 받는 제네릭 메소드로 작성해보았다. public class HttpApiUtil { private Logger logger = LoggerFactory.getLogger(this.getClass());..

DB timestamp 타입과 맞추기 위해 DTO 변수를 LocalDateTime 으로 선언하고데이터를 받아 DTO에 Objectmapper로 set 할때 아래와 같은 오류를 만났다. com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling java8 버전의 날짜/시간 직렬화/역직렬화 하는데 jackson 쪽에서 모듈이 없어 못하는 상황. jackson-datatyp..

IB Sheet8 그리드 제품을 신규 프로젝트에도 사용하기로 되었는데 기존 프로젝트에는 공통 CRUD 컨트롤러/서비스에서 IB Sheet의 데이터 Map 방식을 가공하여 mybatis 쿼리 xml에 맵핑하는 방식으로 되어있었다. 기능을 빠르게 만들어 내기에는 아주 편안한? 그러나 유지보수하기에는 찾기 아주 불편한? 편안한 이유는 기능마다의 컨트롤러/서비스/DTO를 구성할 필요가 없으며, mybatis xml 쿼리만 생성하면 되었기 때문에 java 코드를 작성할 필요가 없었음. 전형적인 대한민국 si 프로젝트 방식으로 구성 되어있었음. 신규프로젝트에는 JPA를 적용하기로 했고, 그러다 보니 기존 공통 CRUD를 그대로 가져다 쓸 수 없었음. (제네릭방식으로 잘 구성하면 다시 재활용 가능하나, 난 유지보수가..

보통 로그인부를 직접 만들어 써도 되지만Spring 에는 security 라는 아주 좋은 인증 기능이 있기 때문에 보통 이것을 사용해왔다. 최근 security 쪽 코드를 개선하다가 사용법을 남겨보려고 한다. Springboot gradle 에 관련 라이브러리를 작성합니다.설정에 필요한 라이브러리만 일단 작성해줍시다.implementation 'org.springframework.boot:spring-boot-starter-web'implementation 'org.springframework.boot:spring-boot-starter-security'implementation 'org.springframework.boot:spring-boot-starter-data-jpa'compileOnly..

서비스를 무중단으로 운영하려다 보니 서비스는 무중단으로 알게모르게 패치가 적용되었지만 로그인 한 사용자들은 세션정보가 이전 was에 남아있기 때문에 재로그인을 할 수 밖에 없는 상황에 빠지게 된다. 그래서 세션을 spring session + redis 를 이용하여 세션을 redis에 담아보려 한다. 먼저 redis를 도커를 이용해 설치해줍시다. docker run -d --name redis -p 6379:6379 -v redis:/data redis:6.2.11-alpine 위와 같이 redis 도커 이미지를 컨테이너에 구동시켰습니다. 그리고 redis-cli를 이용하여 비밀번호를 설정해줍니다. docker exec -it redis /bin/sh /data # redis-cli 127.0.0.1:6..

JPA를 사용하면서 show-sql 과 format_sql 옵션으로 쿼리 로그를 사용하고 있는데 프로젝트 중 mybatis 도 일부 사용하고 있어 여기도 쿼리로그를 남기기위해 어떻게 할까 고민하던 중 p6spy 쿼리로깅을 찾게 되었다. 찾아보니까 아래와 같이 3가지 방법으로 설정할 수 있었다. # Datasource 방식 / URL연결 방식 implementation 'p6spy:p6spy:3.9.1' # SpringBoot 자동설정 방식 implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.1' URL 연결 방식은 예전에 쿼리 로깅을 적용했던 log4jdbc 와 비슷한 구조로 설정할 수 있다. spring: datasource: ..