Java 14에서 처음 도입되었으며, 간결하고 불변(immutable)한 데이터 객체를 정의하는 데 사용됩니다.데이터 클래스를 작성할 때 반복적으로 작성해야 하는 보일러플레이트 코드를 줄이기 위해 설계되었습니다. 1. 간단한 선언record 키워드를 사용하여 클래스를 선언하며, 기본적으로 불변 객체를 생성합니다.예를 들어, 아래의 record는 equals(), hashCode(), toString(), 그리고 불변 필드에 대한 getter 메서드를 자동으로 생성합니다.public record Point(int x, int y) {} 2. 자동 생성된 메서드Constructor: 모든 필드를 초기화하는 생성자가 자동으로 생성됩니다.Getter 메서드: 각 필드에 대해 자동으로 getter 메서드가 생성되..
유틸리티 클래스(Static 메서드만 포함하는 클래스)를 작성할 때 유용하게 사용할 수 있는 애노테이션1. Private 생성자 자동 생성@UtilityClass를 붙이면 Lombok이 자동으로 private 생성자를 생성합니다.이를 통해 해당 클래스의 인스턴스화가 불가능해집니다.@UtilityClasspublic class MathUtils { public int add(int a, int b) { return a + b; }}2. 모든 멤버가 자동으로 static 처리클래스 내부의 모든 필드와 메서드가 자동으로 static으로 변환됩니다.개발자가 static 키워드를 명시하지 않아도 됩니다.@UtilityClasspublic class StringUtils { public..
@Parameterized JUnit의 @ParameterizedTest 어노테이션은 동일한 테스트를 다양한 매개변수로 여러 번 실행할 수 있게 해줍니다. 이를 통해 같은 테스트 케이스에 대해 다양한 입력 값을 테스트할 수 있어 테스트의 포괄성과 효율성을 높일 수 있습니다.https://www.baeldung.com/parameterized-tests-junit-5 public class ParameterizedTestExample { @ParameterizedTest @ValueSource(strings = {"racecar", "radar", "able was I ere I saw elba"}) void testPalindrome(String candidate) { ..
2진수 문자열 -> int 변환입력 문자열이 2진수 형식이어야 하며, 0과 1 이외의 값이 포함된 문자열을 입력하면 NumberFormatException이 발생public class Main { public static void main(String[] args) { String binaryString = "1101"; // 2진수 문자열 // 2진수 문자열을 int로 변환 int decimalValue = Integer.parseInt(binaryString, 2); System.out.println(decimalValue); // 출력: 13 }}int -> 2진수 문자열 변환public class Main..

Spock FrameworkGroovy 언어로 작성된 테스트 프레임워크로, JVM 기반 언어(Java, Groovy 등)에서 유닛 테스트와 BDD(Behavior Driven Development)를 쉽게 작성할 수 있게 해줍니다. Spock은 간결하고 읽기 쉬운 문법과 강력한 기능을 제공하여 테스트 코드를 작성하고 유지보수하는 데 큰 도움을 줍니다. 직관적인 문법: 테스트 코드는 인간이 읽기 쉬운 형식으로 작성됩니다.강력한 모킹 및 스텁 기능: 내장된 모킹 및 스텁 지원으로 간편하게 테스트 더블을 생성할 수 있습니다.BDD 스타일의 테스트: given, when, then 블록을 사용하여 테스트 시나리오를 명확하게 작성할 수 있습니다.데이터 주도 테스트: 다양한 입력 데이터를 쉽게 테스트할 수 있는 데..
BDD (Behavior Driven Development)https://en.wikipedia.org/wiki/Behavior-driven_developmentBDD(Behavior Driven Development)은 소프트웨어 개발 방법론의 하나로, 개발자와 비개발자(예: 비즈니스 분석가, 품질 관리자)가 협력하여 소프트웨어의 기능을 정의하고, 그 기능의 동작을 명확하게 이해하고 검증할 수 있도록 돕는 것을 목표로 합니다. BDD는 TDD(Test Driven Development)에서 발전한 개념으로, 사용자 스토리를 기반으로 한 테스트 작성에 중점을 둡니다. BDD는 개발 과정에서 커뮤니케이션을 강화하고, 모든 이해관계자가 소프트웨어의 동작을 명확하게 이해할 수 있도록 하는 데 중점을 둡니다. ..
Mapstruct를 통해 객체 매핑 작업을 할 때 필드명은 같지만 타입이 다를 때 타입변환이 자동으로 되는데String -> int 필드로 변환할 때는 주의해야한다.@NoArgsConstructor@AllArgsConstructor@Data@SuperBuilderpublic class WishListDto { private Integer index; private String title; private String category; private String address; private String roadAddress; private String homePageLink; private String imageLink; private boolean isVisit..
Java 객체 매핑 라이브러리 중 하나인 Mapstruct를 사용해서 매핑할 때@Builder로 선언된 객체를 매핑할 때는 Mapper 구현체에서 builder()를 사용하여 객체를 생성하게 된다.@NoArgsConstructor@AllArgsConstructor@Data@Builderpublic class WishListDto { private Integer index; private String title; private String category; private String address; private String roadAddress; private String homePageLink; private String imageLink;..
com.samskivert:mustacheMustache 템플릿 엔진의 Java 구현체입니다. 이 라이브러리를 사용하면 Spring 프로젝트에서 Mustache 템플릿을 쉽게 렌더링할 수 있습니다.기본적인 템플릿 렌더링 기능 외에도 사용자 정의 헬퍼를 추가하여 템플릿 기능을 확장할 수 있습니다.https://github.com/samskivert/jmustacheimplementation 'com.samskivert:jmustache:1.15'src/main/resources/templates/index.mustache {{message}}Controller.javaimport com.samskivert.mustache.Mustache;import com.samskivert.mustache.Temp..