java

java

이펙티브 자바 - ITEM 5 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라

맞춤법 검사기 클래스를 구현한다고 가정하자. 검사기는 사전(Dictionary) 클래스에 의존하고, 이를 구현할 때 정적 유틸리티 클래스나 싱글톤 클래스로 구현하는 모습을 많이 볼 수 있다. // Singletonpublic class SpellChecker { private final Dictionary dictionary = new Dictionary(); private SpellChecker() { // 객체 외부 생성 방지 ... } public static SpellChecker INSTANCE = new SpellChecker(); public boolean isValid(String word) { ... return dictionary.contains(word)..

java

mockStatic 사용시 자원해제 문제

문제 발생 프로젝트 테스트 코드를 작성 후 gradle test로 모든 테스트를 실행시키는데 실패를 했습니다. 분명히 클래스 하나하나 테스트에는 문제가 없었는데 전체 테스트를 돌릴 때만 실패를 했습니다. 이 상태에서 다시 gradle test를 하면 실패한 테스트부터 실행하는데 신기하게도 모든 테스트가 통과되었습니다. 일시적인 오류로 실패를 했나싶어 다시 테스트를 돌렸지만 실패를 했고 원인을 찾아봤습니다. 우선 UserFactoryTest만 실패를 하고 원인은 값이 제대로 들어가지 않아 null 인 점, 테스트 순서에 따라 결과가 달라지는 점을 고려해 혹시 다른 테스트에서 UserFactory를 사용하는 부분에서 문제가 생기지 않았나 하며 다른 코드를 찾아봤습니다. @Test void OAuth2_로그인..

java

Jar 파일 배포시 FileNotFoundException 문제

문제 상황 배포 환경은 Jenkins에서 빌드 후 jar 파일과 기타 파일을 전송하고 EC2 인스턴스에서 docker로 컨테이너를 올립니다. Firebase 관한 Config 설정 후 로컬에서 제대로 작동하는 것을 확인하고 배포를 했는데, Docker의 로그를 확인하니 다음과 같은 예외가 발생하여 앱 실행에 실패했습니다. 문제가 생긴 부분은 새로 추가한 부분인 FirebaseConfig 클래스 였고 코드는 다음과 같습니다. @Configuration public class FirebaseConfig { @Value("${firebase.keyPath}") private String keyPath; @PostConstruct void init() throws IOException { FileInputStr..

java

JAVA - 기본 타입(primitive type)

기본 자료형 데이터 타입은 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 역할을 한다. 자바에서는 여려 형태의 타입을 미리 정의하여 제공하는데 이것을 기본 타입이라고 한다. 자바에는 8종류의 기본 타입이 제공되며, 크게 정수형, 실수형, 문자형, 논리형 타입으로 나눌 수 있다. 정수형 타입 자바의 기본 타입 중 정수를 나타내는 타입은 다음이 있다. byte short int long 각각의 정수형 타입에 따른 메모리의 크기 및 데이터의 표현 범위는 다음과 같다. 타입 메모리 크기 표현 범위 byte 1 byte -128 ~ 127 short 2 byte $ -2^{15} $ ~ $2^{15} - 1 $ int 4 byte $-2^{31} $ ~ $2^{31..

고만실
'java' 카테고리의 글 목록