minio springboot file up/download
·
CloudNative/Runtime
https://fullmooney.tistory.com/74 minio multipart testspringboot 앱에서 minio bucket에 multipart file 업로드와 다운로드를 해보자먼저 minio연결을 위한 디펜던시를 추가한다 io.minio minio 8.5.13 minio에 버킷과 access key를 생성해보자.먼저 버킷 생성이다.용량fullmooney.tistory.com지난번 컨피그가 windows에서 경로 권한문제로 잘 처리되지 않아mac에서 다시 환경 구성하고 springboot 통해서 file up/download를 해보자. 컨트롤러 개발에 참고한 블로그이다.https://terianp.tistory.com/201 Spring Boot Web Chatting : 스프링 ..
jib maven 으로 pinpoint agent 배포
·
CloudNative/Observability & Analysis
pinpoint server를 k8s에 배포하였으니https://fullmooney.tistory.com/58 pinpoint server 2.5.4 k8s deploypreviously, pinpoint k8s 배포를 위해 Docker이미지와 YAML 작성을 해보았다.https://fullmooney.tistory.com/56 pinpoint server 2.5.4 base image build for k8spinpoint 는 docker-compose로 배포되고 있어서, kubernetes 환경에 설치방fullmooney.tistory.com이제 agent를 배포하고 테스트해볼 차례다 agent jar를 다운받고 스프링부트 어플리케이션 프로젝트와 동일 레벨에 압축해제한다.pinpoint-root.co..
@Aspect로 공통header 처리
·
개발/java
http request body 에 다시 업무공통header와 payload가 있고, 업무공통 header 에서 txId나 응답시간, 메뉴 ID, 권한, 사용자 ID등등의 정보를 관리한다고 하자. 표준 메시지 포멧을 header 와 payload와 같이 고정한 경우, request의 업무공통header의 대부분의 정보는 응답 공통header에도 동일하게 세팅되고 응답시간 등 일부의 데이터만 바뀔 것이다. RestController -> Service -> DAO 를 거쳐 다시 응답으로 나가기 까지 업무처리에 필요한 대부분의 정보는 payload에 있다고 하면 굳이 Service와 DAO에 header 정보까지 넘길 필요가 없을 것이다. 물론 권한 체크 등의 로직 수행이 필요한 경우 업무공통 header의..
springboot threadLocal 테스트
·
개발/java
threadLocal을 사용해보자 -> threadLocal 에 set을 하고 동일 thread 내에서 전역변수처럼 get하여 사용할 수 있다. 환경은 다음과 같다 springboot 2.7.18 openjdk 11.0.21 먼저 RequestContext 클래스를 생성하고 Map 형식의 Map을 선언한다. public class RequestContext { private final HttpServletRequest request; private final HttpServletResponse response; private final Map map; public RequestContext(HttpServletRequest request, HttpServletResponse response) { this..
springboot resttemplate config 와 restClient 생성
·
개발/java
동기 통신이다. 우선 resttemplate 를 써보자 환경은 다음과 같다. springboot 2.7.18 jdk 11.0.21 dependency를 추가한다. org.springframework.boot spring-boot-starter-web 공통화를 위해 우선 interceptor를 만들어보자. ClientHttpRequestInterceptor를 구현하는 HttpClientRequestInterceptor 클래스를 생성하여 req, res에 대해 로깅을 준비한다. @Slf4j public class HttpClientRequestInterceptor implements ClientHttpRequestInterceptor { @Override public ClientHttpResponse int..
springboot rabbitmq config와 DLQ 예제
·
개발/java
rabbitmq 를 설정하고 사용해보자 환경은 다음과 같다 springboot 2.7.18 jdk 11.0.21 개발에 앞서 로컬 rabbitmq 구성 방법은 이전 게시물을 참고한다 https://fullmooney.tistory.com/29 rabbitmq 로컬구성과 DLQ 설정 도커데스크탑으로 rabbitmq DLQ 설정을 해보자 환경은 다음과 같다. Windows 10 docker desktop 4.15.0 먼저 dockerhub에서 rabbitmq를 검색해서 오피셜 이미지를 받는다. 테스트는 3.12.12-management 태그로 진행했다. fullmooney.tistory.com dependency를 추가한다. org.springframework.cloud spring-cloud-starter..
springboot + redis @Cacheable 사용
·
개발/java
redis @cacheable를 써보자 환경은 다음과 같다 springboot 2.7.18 jdk 11.0.21 잘 변하지 않는 데이터에 대해서 @Cacheable을 통해 DB , API호출이나 로직 수행을 하지 않고, redis cache에 저장된 값으로 즉각적으로 응답을 줄 수 있다. springboot redis 기본 구성은 이전 게시물을 참조하자 https://fullmooney.tistory.com/27 springboot + redis 사용하기 redis를 써보자 환경은 다음과 같다 springboot 2.7.18 jdk 11.0.21 먼저 pom 에 dependency를 추가한다. org.springframework.boot spring-boot-starter-data-redis io.let..
springboot redis client 만들기
·
개발/java
redis를 써보자 환경은 다음과 같다 springboot 2.7.18 jdk 11.0.21 먼저 pom 에 dependency를 추가한다. org.springframework.boot spring-boot-starter-data-redis io.lettuce lettuce-core redis와 redisinsight 로컬 환경 구성(windows 기준)은 아래 게시글을 참조한다. https://fullmooney.tistory.com/26 윈도우 PC에 redis + redis insight 구성 redis가 기본적으로는 windows 설치 버전을 제공하지 않으니 도커데스크톱으로 간단히 구성해본다. 환경은 다음과 같다. Windows 10 docker desktop 4.15.0 docker deskto..
Logbook 으로 access log 남기기
·
개발/java
Access Log를 남겨보자. 환경은 다음과 같다. jdk 11.0.21 springboot 2.7.18 먼저 pom 에 dependency 추가 한다. - 작성일 기준 2.x 마지막 버전 2.16.0 으로 진행 org.zalando logbook-spring-boot-starter 2.16.0 logback에도 관련 설정을 추가해 본다. ${LOGS_CONSOLE_PATTERN} ${LOGS_ABSOLUTE_PATH}/${LOGS_FILE_NAME}-access.log DEBUG ${LOGS_FILE_PATTERN} ${LOGS_ABSOLUTE_PATH}/${LOGS_FILE_NAME}-access.%d{yyyy-MM-dd}.%i.log 100MB 30 3GB application.yml에서 log ..
mybatis interceptor 암복호화 처리
·
개발/java
mybatis를 사용하는 경우 특정 필드의 데이터를 암복호화 하는 경우의 처리방법이다. 환경: JDK11, Springboot 2.7.x org.mybatis.spring.boot mybatis-spring-boot-starter 2.3.0 // mybatisConfig abstract class import java.io.IOException; import javax.sql.DataSource; import org.mybatis.spring.SqlSessionFactoryBean; public abstract class MybatisConfig { public static final String TYPE_ALIAS_PACKAGE = "dev.com"; public static final String C..