전체 글
SXSSFWorkbook 생성 시 FontConfiguration에서 NullPointerException이 발생할 때
흔히 대용량 데이터를 엑셀 파일로 내보낼 때, SXSSFWorkbook을 사용합니다. SXSSFWorkbook은 다른 Workbook과는 달리 Streaming api를 사용하기 때문에 대용량 데이터의 경우 보다 적합합니다. 저도 엑셀 다운로드 기능 구현 시 SXSSFWorkbook를 사용했는데요, 특정 서버에서만 SXSSFWorkbook 생성 시 FontConfiguration에서 NullPointerException이 발생하는 문제가 있었습니다. 아래는 그 문제와 해결 방법입니다. 오류 내용 및 원인 그런데 이번에 서비스를 오픈하면서, 특정 서버에서만 SXSSFWorkbook.createSheet()을 했을 때 아래와 같은 예외가 발생했습니다. Caused by: java.lang.InternalEr..
[Effective Java] 아이템 23 : 태그 달린 클래스보다는 클래스 계층구조를 활용하라
아이템 23 : 태그 달린 클래스보다는 클래스 계층구조를 활용하라 태그 달린 클래스 두 가지 이상의 의미를 표현하며, 이를 특정 필드(이 책에서는 태그)로 구분하는 클래스가 종종 있습니다. class Figure { enum Shape { RECTANGLE, CIRCLE }; // 태그 필드 - 현재 모양을 나타낸다. final Shape shape; // 아래 필드는 RECTANGLE 일 때만 쓰임 double length; double width; // 아래 필드는 CIRCLE 일 때만 쓰임 double radius; // RECTANGLE 생성자 Figure(double length, double width) { this.shape = Shape.RECTANGLE; this.length = leng..
[Effective Java] 아이템 13 : clone 재정의는 주의해서 진행하라
아이템 13 : clone 재정의는 주의해서 진행하라 Cloneable은 메서드가 없는 인터페이스입니다 clone 메서드는 원본 객체의 필드 값과 동일한 값을 가지는 새로운 객체를 생성해줍니다. clone 메서드를 사용하기 위해서는 해당 클래스에서 Cloneable 인터페이스를 구현해주어야 합니다. 이러한 스펙이라면, 아래와 같은 생각이 들 수 있습니다. 저도 그랬구요. Cloneable 인터페이스를 구현해야 clone 메서드를 사용할 수 있다면, Cloneable 인터페이스에 clone 메서드가 선언되어있겠군! 하지만, 아닙니다. clone 메서드가 선언되어있는 곳은 Object이고, protected이며, Override 해주어야 하면 사용할 수 있습니다. @Override public PhoneNu..
[Effective Java] 아이템 10 : equals는 일반 규약을 지켜 재정의하라
아이템 10 : equals는 일반 규약을 지켜 재정의하라 equals를 재정의해야하는 Case 객체의 식별성이 아니라 논리적 동치성을 비교해야하는 경우 String, Integer 와 같은 값 클래스 String a = "가나다"; String b = "abc"; assertTrue(a.equals(b)); 위와 같이 String 같은 값 클래스는 equals 메서드에게 객체 자체가 동일한지 여부보다 값이 동일한지 여부를 기대할 것이다. JPA 영속성 Entity 클래스 (case by case) @Entity @EqualsAndHashCode(of = {"id"}) public class User { @Id @GeneratedValue private Long id; private String name..
최근에 포스팅을 못한 이유
대충 8~9월쯤부터 포스팅과 공부를 거의 못하고있다. 뭐하느라 안했는지 나중에 까먹을까봐 써놓는 글이라 나중엔 아마 지우지 않을까? 사실 놀고먹느라 못쓴게 80퍼정도이긴한데... 위에껀 요즘 자주 듣는 플레이리스트. 그냥 이거 들으면서 쓰고있어서 가져왔음. 친구들은 힙합을 좋아해서 쇼미도 챙겨보는데 난 하나도 몰라... 확실히 내 취향은 아님. 그래서 친구들이랑 음악 프로 보거나 얘기할때 먼가 나만 늙은건가? 싶을때가 있긴함. 8~9월은 돈을 많이 벌었다. 야근을 많이 했거든. 비포괄이라 온전히 보상받는 느낌이 들어 아주 만족스럽다. 근데 딱히 돈 쓸데가 있지는 않아서 대부분은 투자했다. 일 때문에 스트레스도 좀 받았는데 운동하면서 풀었다. 운동이라도 안했으면 모니터 뿌셨을듯... 그래도 예전에 비해서 ..
[Spring Cloud Config] 설정값을 외부에서 관리하자! - 실습
앞선 포스트 기본편에서 이어집니다! [Spring Cloud Config] 설정값을 외부에서 관리하자! - 기본 시작하기 전에 스프링 또는 스프링 부트 개발을 하다 보면 *.properties 혹은 *.yml로 관리되는 환경설정 값이 필연적으로 존재할 수밖에 없습니다. 그리고 이러한 설정 값 중에서는 노출되어서는 안 logical-code.tistory.com Vault 컨테이너 생성 Docker Image Pull docker pull vault Docker Container 생성 이 포스팅에서는 개발용 설정으로 도커 컨테이너를 구동하며, 운영 환경에서 권장되지 않습니다. 개발용 설정에서는 인메모리로 저장소가 생성되며, 개발용 루트 계정 토큰을 설정할 수 있습니다. docker run –cap-add=..