분류 전체보기
-
20.04.20 ~ 20.04.24 TWIL개발 일기장/TWIL 2020. 4. 26. 23:48
@Builder.Default 애노테이션 기본값을 넣어주고 싶다면 @Builder.Default를 사용하면 된다. // Before @Builder public class BookStore { // 바뀌지 않을 고정값이었기에 final을 선언했었다 private final String name = "조르바의 서점"; private String address; private int bookCount; } // After @Builder public class BookStore { @Builder.Default private String name = "조르바의 서점"; private String address; private int bookCount; } Spring RestTemplate 사용 시 모든 요..
-
[Spring] 팩토리 메소드 패턴을 적용하여 bean을 동적으로 사용하기웹 개발/Spring Framework 2020. 4. 19. 22:58
하나의 인터페이스를 상속받는 구현체들이 많을 경우, 팩토리 메소드 패턴을 이용하면 동적으로 필요한 객체를 받아와서 사용할 수 있다. Factory 패턴이란? Factory method는 부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며. 자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다. 부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다. - 위키백과 Head First 디자인 패턴을 참고하여 팩토리 패턴을 정리한 포스팅을 보면 팩토리 패턴에 대해서 학습할 수 있다. 팩토리 메소드 패턴을 이용하면 인터페이스의 구현클래스를 매번 선언해서 가져올 필요없이 가져오려는 인터페이스의 구현체의 타입을 이용해서 가져올 수 있다. Spring에서..
-
Unit Test에 나오는 Fixture와 Mock은 무엇일까?웹 개발/웹&프로그래밍 2020. 4. 5. 12:19
Test Fixture Fixture는 '고정되어 있는 물체'를 의미한다. Junit 팀에서 말하는 테스트 픽스처란? 의역하자면, 테스트 실행을 위해 베이스라인으로서 사용되는 객체들의 고정된 상태이다. 테스트 픽스처의 목적은 결과를 반복가능할 수 있도록 알 수 있고, 고정된 환경에서 테스트할 수 있음을 보장하기 위함이다. 예시 ㅇ 목 또는 가짜 객체의 세팅이나 생성 그리고 삽입할 데이터의 준비 ㅇ 구체적이며 알고있는 데이터를 지닌 데이터베이스 로딩 ㅇ 테스트 픽스처를 만들어내는 특정 파일들을 복사하면 특정 상태로 초기화된 객체들 생성됨. Junit은 테스트 클래스들이 매번 테스트 실행 전/후 아니면 한번만 픽스처를 가질 수 있도록 애노테이션으로 제공한다.(JUnit4이 제공하는 4가지 픽스처 애노테이션:..
-
20.03.30 ~ 20.04.03 TWIL개발 일기장/TWIL 2020. 4. 4. 16:01
rxJava로 retry 처리 스케줄러가 돌아가면서 외부업체 api를 날리다 실패했을 경우 retry가 필요할 것 같아, retry로직을 작성했다. 처음에 생각한 코드는 다음과 같다. publc class BookingRequestService { private final BookingApiService bookingApiService; public Booking(BookingApiService bookingApiService) { this.bookingApiService = bookingApiService; } private static final String MAX_RETRY = 3; public BookingResponse requestBooking() { int reqeustCount = 1; w..
-
팀 내 북스터디로 보기 좋은 '함께 자라기'를 읽고IT, 기술 도서 2020. 3. 31. 19:41
고객! 고객! 고객! 이 책을 읽다보면 소프트웨어를 개발하는데 있어 가장 중요한 건 고객과의 커뮤니케이션이다. 다른 건 몰라도 고객과의 소통을 통해 내놓는 소프트웨어는 실패할 확률이 낮다는게 '함께 자라기'에서 강조하는 애자일이다. 애자일(agile)에 관한 책이라고 말하지만 정작 애자일에 대한 설명은 맨 마지막에 실려있다. 애자일보다는 팀이라는 조직이 어떻게 일해야하는가에 더 초점이 맞춰진 책이다. 어떤 조직이 더 빨리 성장하는가, 어떻게 협업을 해야하는가 등의 이야기가 있으며, 통계 분석을 통해 신뢰성 있는 주장을 내놓고자 한 책이다. 애자일 방법론은 개발 방법론 중에 하나인데, 지나친 형식절차와 계획에 의존하기보다 빠른 프로토타입을 개발해 개발주기를 짧게 가지면서 지속적으로 발전시키는 것이다. 애자..
-
20.03.23 ~ 20.03.27 TWIL개발 일기장/TWIL 2020. 3. 30. 23:50
fixture란? 그렇다면 mock(mock object)는 무엇인가? 테스트 코드를 작성할 때, 실제 DB에 가져오는 데이터나 실제 객체(인스턴스)가 아니라 직접 임의로 만들어주는 걸 다 mock이라고 생각했는데, fixture라는 개념이 있다는걸 알게 됐다. 간단하게 말하면 fixture의 목적은 반복적인 테스트를 하기 위해 잘 알고 있고(well known) 고정된(fixed) 환경 내에서 이뤄지고 있다는 걸 보장하기 위함이다. input 데이터를 세팅하거나, mock 객체의 setup, creation이다. 또는 DB의 구체적인 데이터 셋을 세팅하는 것이다. 이건 따로 포스팅을 하면 좋을 주제일 것 같아서 나중에 포스팅하고 링크를 걸어둬야겠다. 작성한 포스팅으로 추상화 신경쓰기 호출하는 쪽에서는 ..
-
실리콘밸리의 실상 '카오스 멍키'를 읽고IT, 기술 도서 2020. 3. 22. 17:10
정기구독으로 보고 있는 리디셀렉트에서 '카오스 멍키'를 보고 기술 서적 말고도 it 업계의 책도 봐야지 라는 마음으로 읽기 시작했다. 책이 꽤 두꺼워서 읽는데까지 시간이 좀 걸렸지만, 마냥 내가 가지고 있던 실리콘밸리의 환상을 깨준 책이다. 이제까지 실리콘밸리라하면 개발자에게 있어 파라다이스(?)일까 라고 생각했었다. 이 책을 읽고나면 '워라밸'을 중시하는 개발자에게는 실리콘밸리에서 일한다는게 좋아보이진 않을 것이다. 아직 기억나는게 변기에 앉아서 코딩을 하고 있었다는 장면이었는데, '와.... X 누면서 코딩을 하고 있다니.. 미쳤다!!'라고 생각했다. 그리고 저자도 프로젝트를 개발하며 정확히 기억은 안나지만 하루에 18시간(?) 정도를 몇 달 동안 일했다고 했다. 듣기만 해도 찌들것 같아... 마냥 ..
-
20.03.16 ~ 20.03.20 TWIL개발 일기장/TWIL 2020. 3. 21. 17:48
재택근무 재택근무라고 사무실보다 일을 더 안할거라고 생각하면 정말 오해다. 오히려 쉬는시간에 대한 구분이 없어 일을 더하는 기분. 삽질을 하고 있으면 시간을 허무하게 보낸 거 같은 현타.. 배워야할 기술들 신규 프로젝트 건으로 카프카를 익혀야할 것 같다. 우선순위는 아니다. 코틀린, JPA를 학습하는게 기술적으론 우선순위다. 추가적으로 AWS를 써본적이 없어서 콘솔창을 한참을 뒤져보고 돌아다녔다. 아직까진 터미널로 작업하기보다는 GUI를 제공하는 툴이 있으면 그걸 더 활용하는 편인데, 적절한 균형을 맞춰야 할 것 같다. Unit Test와 Integration Test 사실 Unit Test는 스프링이 없어도 돌아갈 수 있어야한다. 하나의 함수에 대해 내가 지정한 input, 설계한대로의 output을 ..