java 5

[ModelMapper] 필드 타입이 다른 두 객체간 매핑 커스텀하기

Introduction 프로젝트를 진행하던 중 타입이 다른 두 객체간에 ModelMapper로 매핑을 할 일이 생겼다. public class Person { ... private String images; } public class PersonDto { ... private List images; }Entity의 Images는 String 타입으로 여러 이미지 파일 이름을 ;를 구분자로 사용하여 저장하고, Dto는 String 을 Split 하여 리스트로 변환하여 응답해야 하는 상황이다. 즉, "a;b;c;d" -> ["a", "b", "c", "d"]위와 같이 매핑하는것이 목표이다. Solution ExpressionMap과 Converter를 사용하면 된다. ExpressionMap은 람다 식을 이..

개발/Spring Boot 2023.12.02

[Intellij] Spring 프로젝트 빌드 후, jar 실행시 ClassNotFoundException 발생 오류 해결

로컬 환경에서는 문제가 없었는데 빌드후 Executable jar을 실행하니 클래스 하나를 로드하지 못하였다. jar에 해당 라이브러리만 추가가 안 된듯 싶었다. 구글링 해 보니 다음과 같은 방법으로 추가 가능 이후 실행이 잘 되었다. Intellij를 처음써서 생기는 어이없는 오류 출처 https://youn12.tistory.com/42

개발/Intellij 2022.05.25

[Java] HashSet.contains() 를 사용하기 위한 @override hashcode()

2차원 배열에 대한 좌표 x, y를 필드로 가지는 객체를 생성후 equals() 를 정의했다. @Override public boolean equals(Object o) { if(o instanceof Pos) { Pos p = (Pos) o; return this.x == p.x && this.y == p.y; } else { return false; } } 하지만, HashSet.contains() 메서드를 사용할 때, 동일한 좌표를 가지는 객체가 존재하더라도 false를 리턴하였다. HashSet은 내부적으로 HashMap을 사용하며, HashMap은 두 객체가 동일한 키임을 판단할 때, 두 hashcode가 같아야 하며, 두 객체가 동일하거나(== 연산결과가 true) 동등해야한다.(equals(..

개발/Java 2022.04.30

[Java] HashMap의 computeIfAbsent(), computeIfPresent(), putIfAbsent() 사용정리

computeIfAbsent() 키가 존재하지 않을때 해당 람다식 실행 해당 키가 존재하던 존재하지 않던 해당 value값을 리턴한다. Map map = new HashMap(); map.computeIfAbsent(1, v -> 1); //키 1이 존재하지 않으므로 1을 삽입 map.computeIfAbsent(1, v -> 2); //키 1이 이미 존재하므로 람다식 실행안됨 System.out.println("size: " + map.size()); map.forEach((k, v) -> System.out.println(k + " " + v)); size: 1 1 1 putIfAbsent() 위의 예시처럼 단순 put 연산을 할 것이라면 putIfAbsent() 메서드를 사용하는게 더 편하다. 이 ..

개발/Java 2021.11.09