Spring 7

[Spring] elasticsearch-rest-client 8.5.3에 opensearch 연결하기

기존 elasticCloud를 사용했던 서비스를 opensearch로 변경해야 하는 업무가 할당되었다. [이슈] 변경 업무에 대해서 몇가지 이슈가 있는데 - 현재 사용하고 있는 elasticCloud는 elasticsearch 8.5.3 버전을 사용하고 있다. - elasticCloud와 opensearch에서 지원하는 라이브러리는 서로 다르다. 이로 인해서 elasticCloud에서 opensearch로 넘어간다면 라이브러리도 변경해야하고 기존의 rest-client 문법이 아닌, HighLevelClient 문법으로 변경해야 하는 크나큰 작업을 해야 한다. 큰 작업을 하는 것보다는 elasticsearch-rest-client를 이용하여 opensearch를 연결하는 방법이 있지 않을까 하여 구글링을..

Spring 2023.01.30

SpringBoot LogBack 간단설정

오늘은 SpringBoot의 Application.yml을 이용하여 LogBack을 간단하게 남기는 방법에 대해 쓰도록 하겠습니다. SpringBoot를 이용하여, LogBack을 간단하게 구현하려면 아래와 같은 방식으로 구현을 하면 됩니다. logging: file : name : /users/myapp/log/test.log // 파일 경로 및 이름 level: root: INFO // 로그레벨 지정 logback: rollingpolicy: file-name-pattern: Log-%d{yyyy-MM-dd}.%i.log //로그에 대해서 날짜별로 나누기 위함. clean-history-on-start: true total-size-cap: 100MB // 로그 파일 사이즈 조정 max-history..

Spring 2021.06.07

SpringBoot Dynamic Log

오늘은 Actuator를 이용한 Dynamic Log에 대해서 알아보도록 하겠습니다. Actuator를 이용하여 SpringBoot Log 레벨을 설정한다면, 매우 다이내믹하게 사용이 가능합니다. curl -X "POST" "http://localhost:8080/actuator/loggers/ROOT" -H "Content-Type: application/json; charset=utf-8" -d $'{ "configuredLevel": "DEBUG" }' 이러한 주소 하나를 호출하는 것만으로 실행 중인 어플리케이션으로 Log Level을 변경해줄 수 있습니다. 해당 설정을 하기 위해서는 build.gadle 또는 pom.xml에 actuator를 빌드하셔야 사용 가능합니다. dependencies {..

Spring 2021.06.07

SpringBoot Kotlin Log(AOP/Filter)

안녕하세요~ 요가하는 개발자입니다 ㅎㅎ 어느날 Log를 어떻게 찍을 것이냐! 라는 이야기를 듣고, 내 나름대로 Log에 대한 데이터를 찾아보며, Log를 어떻게 찍을 것인지에 대해서 정해보았습니다. 몇가지 규칙을 정하고 자료 검색 / 사람들은 어떻게 구현하였는지에 대한 코드 분석을 하여, 아래와 같은 규칙을 정하고 구현을 시작하였습니다. 규칙. Controller / Service / Repositroy에 들어가는 ClassName과 Parameter, Time, Api 주소, Api 요청은 항상 Log로 남겨둘 것. 유저 표시로는 AOP에서 Body 데이터를 꺼내 유저에 대한 정보를 얻을 수 있는 방법을 어렵고, 현재는 Spring Security는 너무 복잡하고 무겁기 때문에, RequestHeade..

Spring 2021.06.06

@Transactional 사용 시 주의해야하는 8가지

지난번에 @Transactional에 대해서 알아보았다. 오늘은 @Transactional을 사용시 주의점에 대해서 8가지정도 알아보려고 합니다. @Transactional이 무엇인지 궁금하다면, 아래의 링크를 통하여 한번 보고 오시길 바랍니다. @Transactional 이란? @Transactional Spring을 공부하다보면 AOP(Aspect oriented programming) 라는 주제가 항상 나온다. 그 AOP라는 주제에 대해서 공부하다보면 가장 먼저 나오는 AOP의 주제는 바로 @Transactional을 구현하는 것이다. 해당 @Tran.. flambeeyoga.tistory.com @Transactional 사용 시 주의해야하는 8가지 1. @Transactional의 우선순위. 클..

Spring 2021.03.21

@Transactional을 아시나요?

Spring을 공부하다보면 AOP(Aspect oriented programming) 라는 주제가 항상 나온다. 그 AOP라는 주제에 대해서 공부하다보면 가장 먼저 나오는 AOP의 주제는 바로 @Transactional을 구현하는 것이다. 해당 @Transactional을 구현하는 방법에 대해서는 토비님의 책 중에 토비의 스프링Vol1에서 AOP의 주제와 함께 세세하게 설명되어 있다. 오늘은 바로 @Transactional이 무엇인지에 대해서 설명하려고 합니다. @Transactional 이란? Spring에서 지원하는 트랜잭션 처리 Annotation. AOP로 구성되어 있으며, 직접적으로 Repository와 연결되어 작업되는 Service method에 @Transactional을 붙여주면, 처음에..

Spring 2021.03.21

@ControllerAdvice와 RequestBodyAdvice을 이용한 RequestBody 데이터 변경 방법

이 글에 앞서, 일단 @ControllerAdvice에 대해서 짧게 알아가려고 합니다. @ControllerAdvice를 아시나요? @ControllerAdvice는 짧게 말해서 Spring이 제공하는 AOP(Aspect oriented programming)의 기능 중에 하나이며, 전역에 있는 컨트롤러에 공통적으로 사용되는 것이 있을때, 적용시켜주는 annotation입니다. 현재 흔히 사용하는 @ControllerAdvice의 방법은 대표적으로 Global ExceptionHandler를 만드는 방식으로 쓰이고 있고, 많은 블로그에서 대부분 @ControllerAdvice의 예제는 Global ExceptionHandler에 대한 예제로 가득차 있다. 또한 @ControllerAdvice는 Excep..

Spring 2021.03.20