spring

Controller에서 primitive type과 wrapper type의 변형과 유효성검사

최근에 새로 자바/스프링을 공부하는 친구들에게 질문을 받았는데, 문득 어? 잘 모르겠는데 싶어서 테스트해보았다. 과연 @RequestBody에 null 값을 받게 되었을 때, wrapper type에서는 null로 매핑되겠지만, primitive type에서는 NPE가 발생할까? default value인 0이 매핑될까?

결과를 확인해보니,

primitive type에서는 default value인… 더 보기 »Controller에서 primitive type과 wrapper type의 변형과 유효성검사

Mockito에서 Multi-Stubbing 적용하기

Overview 팀에서 초기부터 Junit5를 적용하다보니, MockitoExtension을 제대로 제공받지(?) 못했다. 그래서 오픈소스로 공개되어 있던 것 중에 하나를 그냥 복사해서 프로젝트내에 class를 두고 사용했다. 그러다가 최근에 SpringBoot에서 Junit5를 지원1 해주는 김에 SpringBoot로 의존성 관리하도록 바꿨다. 그랬더니 자연스럽게 Mockito 버전도 올라가고, MockitoExtension이 제공되고… 더 보기 »Mockito에서 Multi-Stubbing 적용하기

데이터 분석의 명암

최근에 들어서 데이터의 수집과 통계 자료를 통해서 현상을 파악하고 새로운 트렌트를 찾으려는 시도가 많아졌다. 많은 업체에서는 데이터를 기반으로 UX를 분석하기 위해 A/B 테스트를 도입하기도 하고 이를 회사의 장점으로 채용 공고에 소개하는 경우도 많이 있다. 그간 얼마나 주먹구구식의 의사결정이 있었는지는 모르겠지만,… 더 보기 »데이터 분석의 명암

2020 SpringOne 소식

코로나19는 순식간에 우리 일상을 디지털의 세계로 바꿔놓았다. 비디지털의 세계(쇼핑, 교육, 회의)의 변화에 호응하는 것인지, Best Practice를 보여주려는 것인지 세계 최대 규모의 개발 컨퍼런스 중 하나인 SpringOne도 온라인으로 진행하게 된다. 게다가 온라인이라는 장점을 십분발휘해서, All virtual, All free이다. 9월 1일 주간이라고… 더 보기 »2020 SpringOne 소식

@SpringBootTest + mockMvc vs @WebMvcTest

테스트를 작성하려고 했더니, 아래와 같은 오류가 발생했다.

처음에는 왜 Bean을 인식하지 못하는지, 해당 Bean의 선언과 Configuration에서 Bean Scan Scope를 확인했는데 모두 정상이었다. 나중에 알게된 사실1 인데, 같이 일하는 사람과 서로 테스트의 방식이 달랐던 것이다. 평상시에 내가 제일 즐겨하는 controller… 더 보기 »@SpringBootTest + mockMvc vs @WebMvcTest

Lombok @Data에서 기본 생성자는?

Lombok을 사용했을 때, @Data를 붙이면 기본생성자로 @NoArgsConstructor를 생성해주는 줄 알았다. 그런데 누가 물어봐서 대답하려고 보니, 명확하게 모르는 것을 깨닫고 찾아보았다. 1 @Data를 붙이게 되면, 일반적으로는 @NoArgsConstructor를 만들어주는 것처럼 보인다. 하지만 엄밀히 말하면 @NoArgsConstructor가 아니라 @RequiredArgsConstructor가 생성된다. 즉, final접근자가 붙어있거나 @Nonnull 애노테이션을… 더 보기 »Lombok @Data에서 기본 생성자는?

ApiService에 대한 Mock Test 예제

Api를 호출하는 서비스에 대한 테스트는 잘 하지 않는 경우가 많다. 혹은 @Ignore를 붙여놓고 필요시에만 풀어서 쓰는 경우도 있다. Mock Server를 제공해서 테스트 할 수 있는 걸 알고 있는데, 자주 쓰지 않으니 쓸 때마다 헷갈려서 기록해둔다.

 

Spring Batch에서 Application 설정

새로 스프링 배치 프로그램을 만들었는데, 테스트 환경에서는 특별히 이슈가 없다가 운영 환경에서 오류가 발생했다.

결국은 8080 포트가 충돌나서 오류가 발생한 것이었다. 배치를 여러 번 실행시키는 경우 톰캣이 제대로 shutdown시키지 못해서 발생하는 문제였다. 그런데 스프링 배치인데, 굳이 톰캣을 8080 포트로… 더 보기 »Spring Batch에서 Application 설정

Spring @ConfigurationProperties 분석

배경 현재 개발하고 있는 것은 ‘서비스의 정산’에 대한 서비스이다. 그런데 정산이라는 것이 결제가 있다면 항상 들어가야 하는 미들웨어와 같은 성격을 지니고 있다.그러다보니 서비스의 설정 정보들이 각 프로젝트에 혼재해있어서 정리를 해보려고 한다.   현재 상황 전체적으로 정산에 대한 공통 부분을 사용하기… 더 보기 »Spring @ConfigurationProperties 분석

Spring Data Rest URL 생성 분석

최근 업무에서 /api/entities이란 URL이 존재하는데, 아무리 Source를 뒤져봐도 해당 URL을 찾을 수 없었다.

몇 번 삽질을 하다가 결국 spring-data-rest를 사용했음을 알게 되었고, 해당 Library를 초기 분석한 내용을 기록해둔다. 공식문서1에 따르면 dependency는 아래처럼 설정해주면 된다.

그리고 기본 BaseUrl은 아래처럼… 더 보기 »Spring Data Rest URL 생성 분석