본문 바로가기

Java4

빌더 패턴(Builder Pattern) 빌더 패턴(Effective Java)이펙티브 자바를 읽던중 생성자에 "매개변수가 많다면 빌더를 고려하라"는 글을 보고 최근 프로젝트에서 lombok의 @Builder 어노테이션을 사용해 빌더 패턴을 사용한 기억이 났습니다. 빌더 패턴을 사용하더라도 왜 사용하는지 알고 써야 할것같아서 정리해봅니다.인터넷을 찾아보니 GoF의 빌더 패턴과는 다른 접근방법 같지만 저는 이펙티브 자바의 빌더 패턴을 설명하겠습니다.이 책에서는 빌더 패턴을 설명하기 전에 점층적 생성자 패턴과 자바 빈즈 패턴에 대해 소개하고있습니다.점층적 생성자 패턴(telescoping constructor pattern)선택적 매개변수가 많을 때 보통 개발자들은 점층적 사용자 패턴(telescoping constructor pattern)을 사.. 2021. 10. 2.
카카오 좌표로 주소 변환하기 카카오 좌표로 주소 변환하기(자바) 다시 블로그를 시작할겸 간단한 주제로 올리는 글.. 현재 진행중인 프로젝트에서 외부 API를 이용해 다양한 정보를 사용자에게 보여줘야 합니다. 이 API에서는 좌표정보는 제공해주지만, 좌표에 대한 주소정보를 제공해주지 않아 직접 좌표를 주소로 변환해야 합니다. 주소변환에 카카오 API를 사용하기로 했습니다. https://developers.kakao.com/console/app 애플리케이션을 추가해서 앱 키 중 REST API키를 사용해야 합니다. https://developers.kakao.com/docs/latest/ko/local/dev-guide#coord-to-address 가이드가 자세히 나와있습니다. // 가이드를 보고 만든 스프링 코드 @Override.. 2021. 8. 11.
Java Object를 Map으로 변경하기 Java Object를 Map으로 바꾸기 같이 프로젝트하는 프리랜서분이 Java Object를 Map으로 변환하는 기능을 만들어달라고 요청하셨다. 인터넷을 검색하던 중 Apache Commons BeanUtils을 이용하면 쉽게 변환할 수 있다고 해서 프로젝트 내부에서 찾아보니 Apache Commons BeanUtils 라이브러리를 찾을 수 없었다. 다른 방법을 찾던중 Jackson의 ObjectMapper를 이용하면 Java Object를 쉽게 Map 으로 변경할 수 있다는 것을 알게 되었다. 다행히 프로젝트 내부에서 Jackson 라이브러리를 찾을 수 있었고 Jackson의 ObjectMapper를 이용하여 기능을 만들었다. ObjectMapper를 사용하기 위해 먼저 Jackson 라이브러리를 추.. 2020. 6. 21.
System.arraycopy(), Arrays.copyOf() System.arraycopy(), Arrays.copyOf() StringBuilder의 append() 메서드를 살펴보던중 다음과 같은 메서드를 발견하게 되었다. 배열을 복사하는 메서드는 System.arraycopy() 밖에 몰랐기 때문에 Arrays.copyOf() 메서드는 System.arraycopy()와 어떻게 다른지 인터넷을 찾아봤다. int[] arr = {1,2,3,4,5}; int[] sysCopyArr = new int[10]; System.arraycopy(arr, 0, sysCopyArr, 2,5); // [0, 0, 1, 2, 3, 4, 5, 0, 0, 0] System.out.println(Arrays.toString(sysCopyArr)); int[] copyOfArr = .. 2020. 6. 11.