전체 글 195

ReflectionTestUtils를 이용한 private 필드와 메서드 단위테스트

ReflectionTestUtils를 이용한 private 필드와 메서드 단위테스트개요ReflectionTestUtils는 SpringFramework의 Test Context 에서 제공하는 유틸로, 프라이빗 필드나 메서드를 테스트할 수 있다.비공개 필드 값 설정비공개 필드 값 접근비공개 메서드 호출테스트를 작성하다보면 종종 단위테스트에서 위와 같은 접근이 필요할 때가 생기는데, 이 때 해당 클래스의 Private 메서드를 열지 않고 ReflectionTestUtils를 사용하면 접근할 수 있다.예시 코드예시 코드를 위해 직원 클래스를 만들어보자. 이 직원을 고용할 때 계약서에 이름과 계약 연봉을 작성한다.이름은 변경 불가능하니 private final을 붙이고, 연봉(annualSalary)는 매년 변..

개발/Spring 2024.12.02

Java 14 Record Keyword

1. record 키워드란?객체 간에 변경 불가능한 데이터를 전달할 경우 사용데이터베이스의 결과, 쿼리 결과, 서비스 정보 등 간단한 데이터를 보관하기 위해 클래스를 작성한다. 이 경우 많은 경우 변경 불가능한 데이터이다.record keyword에서 포함하는 것private 필드getterpublic 생성자equals 메서드hashCode 메서드toString 메서드2. 예시import java.util.Objects;public class Shop { private final String name; private final String address; public Shop(String name, String address) { this.name = name; ..

개발/Java 2024.11.22

[Lombok][Warning] @Builder will ignore the initializing expression entirely.

warning: @Builder will ignore the initializing expression entirely. If you want the initializing expression to serve as default, add @Builder. Default. If it is not supposed to be settable during building, make the field final. 빌드 시에 위 warning이 뜨는 케이스에 대해 알아보자. @Builder @Data @NoArgsConstructor public class Worker { private Long workerId; private WorkerType type = WorkerType.BASIC; } 만약 위와 같은 코드..

개발/Java 2023.01.15

[Lombok][Warning] 상속받은 클래스에 @Data만 사용하면 Warning이 뜨는 이유

프로젝트를 빌드할 때 종종 보이는 warning이 거슬려서 정리하는겸 블로그에 정리해본다. warning: Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type. @Data 위 에러가 빌드할 때 종종 에러로 올라오는 것을 보았는데, IntelliJ를 통해 수정하면 @EqualsAndHashCode(callSuper=true) 어노테이션을 붙여주며 해결하지만, 왜 필요한지 한번 알아보자..

개발/Java 2023.01.14

[회고] 2022년 회고 및 2023년 로드맵 정리

[회고] 2022년 회고 및 2023년 로드맵 정리 2022년이 지나고 어느새 2023년이 다가왔다. 작년 연말에 남은 연차를 소진하려고 휴가를 몰아서 다녀왔더니 연말 회고 시간을 놓쳐 늦었지만 지금이라도 2022년 회고를 작성해 본다. 2022년 로드맵 작년 1월에 로드맵을 작성하고 시작했었는데, 연말에 어떤 것을 완료했는지 확인해보니 이것저것 한 것은 많지만 달성하지 못한 것도 있어서 내용을 정리해 보기로 했다. 2022년에 로드맵을 가시화해서 정리해본 것은 처음이었는데, 진행 중에 실제로 내가 얼마나 지척사항이 있는지 상태별로도 볼 수 있고, 속성별로 내가 어떤 것이 부족한지 파악하기 쉬워서 괜찮았었다. 2023년에도 로드맵을 작성하고 조금 더 구체화해 봐야겠다. 개발 1. 스터디 5개 이상 진행 ..

개인 2023.01.05

[Java] AssertJ 사용법

Introduction to AssertJ | Baeldung AssertJ is an open-source library for writing fluent and rich assertions in Java tests. This article focuses on tools available in the basic AssertJ-core module. www.baeldung.com 해당 게시글은 위 글을 번역 및 테스트한 글이다. 1. AssertJ란? Java Test를 다양하게 사용할 수 있는 오픈 소스 커뮤니티 중심 라이브러리 2. 소개 AssertJ의 클래스 및 유틸리티 메소드 Standard Java Java 8 Guava Joda Time Neo4J and Swing components 예시 코..

개발/Java 2022.10.23

[밀리의 서재][오디오북] 어이쿠, 오늘도 행복했네

밀리의 서재 오디오북 어이쿠, 오늘도 행복했네 행복이 노력으로 이뤄질까? 1년 365일, 매일 즐겁고 신나는 인생이 내 것이 될 수 있을까? 작가의 행복한 가치관과 일상이, 독자들에게도 퍼져나가는 듯한, 기분 좋은 책 책 소개 ‘행복한가’라는 질문에 선뜻 그렇다고 답하는 사람은 얼마나 될까. 세상에 떠도는 갖가지 행복 지침이 떠오르지만 실제 삶에 적용하기란 쉽지 않다. 행복한 사람은 따로 있는 게 아닐까도 싶다. 이정수는 한때 유명 개그맨이었지만 지금은 행사 사회자, 강사, 방송인. 딸 둘 키우는 아빠이자 주부이고, 자기 소유의 집도 없다. 특별히 행복한 조건을 타고나지도 않았다. 말하자면 평범하다. 그런 그가 6년 동안 적은 일상의 기록을 보니 행복한 순간의 연속이었다. 어떻게 매일 행복하냐는 질문을 ..

2022.10.22

[Spring] Spring Boot 버전별 차이점

Spring Boot 버전 별 차이점 (2.2 ~ 3.0) + Spring Cloud 1. 개요 최근 사내에서 Spring Boot 버전을 올리면 어떨까 해서 Spring Boot 버전 및 Spring Cloud 버전 차이점에 대해서 간단하게 알아보고 있다. 프로젝트마다 Spring Boot 사용하는 버전은 각각 다른데, 그러다 보니 가끔 코드를 이쪽저쪽 주워 가다 보면 다른 점들이 있어서 변경해서 사용하곤 했다. 구체적으로 어떤 차이점이 있는지 한번 알아보고 상위 버전으로 마이그레이션을 한다면 어떤 것들을 주의해야 하는지도 알아보자. 일단 사내에서 사용중인 제일 낮은 Spring Boot 버전은 2.1.X 버전 대라 해당 버전 이후 버전들을 확인했다. 2. Spring Boot와 Spring Frame..

개발/Spring 2022.10.22

[Spring] Spring Boot v2.7

Spring Boot v2.7 Spring Boot 2.7 Release Notes · spring-projects/spring-boot Wiki 1. spring.mongodb.embedded.features 구성 속성이 제거됨 Embedded Mongo 3.4는 Mongo 기능 구성에 대한 지원을 중단함. 이에spring.mongodb.embedded.features 구성 속성이 제거되었음. Mongo를 시작하는 데 사용되는 명령줄을 변경하기 위해 기능이 지정되는 고급 구성의 경우 사용자 지정 MongodConfig 빈을 대신 제공해야 함. 2. MongoDB 속성 우선 순위 이전에는 spring.data.mongodb.uri가 spring.data.mongodb.host 및 spring.data.m..

개발/Spring 2022.10.18

[Spring] Spring Boot v2.6

Spring Boot 2.6 Release Notes · spring-projects/spring-boot Wiki 1. Spring Boot 2.4로부터 Deprecation 된 사항 Spring Boot 2.4에서 더 이상 사용되지 않는 클래스, 메서드 및 속성이 이번 릴리스에서 제거됨. 업그레이드하기 전에 더 이상 사용되지 않는 메서드를 호출하지 않는지 확인 2. 기본적으로 금지된 순환참조 이제 기본적으로 빈 간의 순환 참조가 금지됨. BeanCurrentlyInCreationException으로 인해 애플리케이션이 시작되지 않으면 종속성 주기를 중단하도록 구성을 업데이트하는 것이 좋다. 만약 순환 참조 해결이 어렵다면 spring.main.allow-circular-references를 true로..

개발/Spring 2022.10.17