본문 바로가기

프로그래밍/알아보자 시리즈3

[Spring] @Retention에 대하여.. 얼마 전 Mapstruct를 사이드 프로젝트를 적용 하면서 삽질을 한 경험이 있다. 삽질을 하면서 코드도 까보고 하다보니 @Retention에 대해서 검색하게 되었고, 지금 까지 @Retention에 대해서 무지했던 나를 반성하면서 이번기회에 정리해보고자 한다. 일단 Retention이라는 영어단어의 뜻은 '보유' 라는 뜻이다. 동의어로는 holding, hold, tenure, supplement, enjoyment 등이 있다. 지금까지 살펴본 바로는 @Retention이라는 어노테이션은 우리가 DI해서 사용하는 어노테이션 안에 설정되어 있다. 설정 값을 보면 RetentionPolicy.SOURCE 라고 적혀 있다. 이 말인 즉슨 이 getter 어노테이션이 소스 단 까지 유지된다는 것이다. 즉, 컴.. 2023. 2. 25.
[Spring] JAVA Reflection API가 궁금하다! 얼마 전에 MapStruct, ModelMapper, ObjectMapper에 대하여 chatGPT에게 질문하였다. ObjectMapper는 런타임 환경에서 JAVA의 Reflection API를 이용해서 작동한다는 것을 알게 되었고, Reflection API가 무엇인지 찾아보기 시작하였다. Reflection에 대해서 chatGPT에게 질문하였고, 답변을 받을 수 있었다. 스프링의 Reflection API는 자바의 리플렉션 기술을 이용하여 객체를 동적으로 생성하거나 객체의 속성 값을 조회하거나 수정 할 수 있도록 하며, 메서드를 호출할 수 있도록 지원한다고 한다. 또한, 스프링에서는 bean생성, 조회, 수정에 Reflection 기술을 이용한다는 것을 알 수 있었다. 즉, BeanFactory에서.. 2023. 2. 25.
[JPA] MapStruct를 써야 하는 이유 MapStruct를 써야 하는 이유 MapStruct는 Java 객체 간의 매핑을 자동화하기 위한 코드 생성 도구입니다. 일반적으로 객체 간의 매핑을 수동으로 구현하는 것은 번거롭고 실수를 할 수 있으므로 개발자들은 MapStruct와 같은 도구를 사용하여 이러한 문제를 해결할 수 있습니다. MapStruct는 매핑 코드를 자동으로 생성하기 때문에 개발자는 수동으로 작성해야 하는 매핑 코드를 작성할 필요가 없으므로 시간과 노력을 절약할 수 있습니다. 또한, MapStruct는 코드 생성기를 사용하여 코드를 생성하기 때문에 컴파일 타임에 매핑 오류를 발견할 수 있으며, 이를 수정하기 위해 빠르게 대응할 수 있습니다. MapStruct는 애노테이션을 사용하여 매핑 규칙을 지정할 수 있습니다. 이러한 규칙은 .. 2023. 2. 19.