본문 바로가기

전체 글

(43)
[Spring] 통합 테스트와 슬라이스 테스트 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 강의를 들으면서 슬라이스 테스트 개념이 나온 김에 간단하게 개념을 정리해보고자 합니다. 통합 테스트란? 단위 테스트 이후, 각 모듈들의 상호 작용이 제대로 이루어지는지 검증하는 테스트입니다. 모듈을 통합하는 과정에서 발생할 수 있는 오류를 찾을 수 있습니다. 애플리케이션이 실행될 때 설정을 임의로 바꾸어 테스트를 진행할 수 있으며, 여러 단위 테스트를 하나의 통합 된 테스트로 수행할 때 적합합니다. 통합 테스트는 여러 단위의 테스트들을 통합하여 수행합니다. (Controller -> Service -> Repository) @SpringBootTest Spring에서는 ..
[Elasticsearch] auto_generate_synonyms_phrase_query = true error 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 최근 spring boot 1.5 버전에서 2.6으로 옮기는데 같은 코드를 옮기는데에도 에러가 발생하여 기록으로 남겨두려고 합니다. 기존 프로젝트에서는 엘라스틱서치를 5버전대로 사용하였습니다. 현재는 스프링부트의 버전만 올린 상태로 프로젝트를 옮기는 것이었기 때문에 일단 코드가 실행되게 해야됐습니다 에러는 아래와 같았습니다. 10:20:06.868 ERROR l.d.l.e.h.GlobalExceptionHandler - Internal Server Error. java.lang.NullPointerException: Cannot invoke "com.google.gson..
[디자인패턴] 템플릿 메소드 패턴(Template Method Pattern) 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 김영한님 강의인 스프링 핵심원리 - 고급편을 보면서 템플릿 메소드 패턴에 대해 다시 복습하고자 '얄팍한 코딩사전 : 객체지향 디자인패턴 2'을 참고하였습니다. 템플릿 메소드 패턴이란? 어떤 같은 형식을 지닌 특정 작업들의 세부 방식을 다양하고자 할 때 사용하는 패턴입니다. 변하지 않는 것은 추상클래스의 메서드로 서언하고, 변하는 부분은 추상 메서드로 선언하여 자식 클래스가 오버라이딩 하도록 처리합니다. 이렇듯 특정 작업을 처리하는 일부분을 서브 클래스로 캡슐화하여 전체적인 구조는 바뀌지 않으면서, 특정 단계에서는 수행하는 내용을 바꾸는 패턴입니다. 예를 들어 대대로 전통..
[Spring] springSecurityFilterChain 관련 에러 (Java 상위 버전으로 변경시 생기는 문제) 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 기존에 있는 스프링부트 1.5.3버전의 프로젝트를 2.6.2로 버전업을 하면서 생기는 문제가 있었습니다. JAVA 버전을 8로 사용하다가 17로 변경하면서 생기는 문제였습니다. 에러 내용은 아래와 같았습니다. Error creating bean with name 'springSecurityFilterChain' defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]: Bean instantiatio..
[Spring] @Transactional이 2개라고? 일단 그게 뭔데? 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 레거시 프로젝트를 버전 업을 하는 도중 @Transactional이 import 방법이 2가지가 있다는 것을 알았습니다. 당연하게 써오던 것이었는데 두 가지의 차이가 무엇인지 궁금하여 알아보았습니다. 😅 Transactional이 무엇인데? 우선 여기서 말하는 트랜잭션은 데이터베이스 관리 시스템이나 유사한 시스템에서 상호작용 단위라고 할 수 있습니다. 그리고 이 상호작용 단위는 더 이상 쪼개질 수 없는 최소의 연산을 의미합니다. 트랜잭션은 ACID 원칙을 갖고 있습니다. ACID원칙이란? 더보기 원자성(Atomicity) : 트랜잭션은 분리할 수 없는 하나의 단위입니다...
[JAVA] Stream을 사용하여 Map의 key와 value들을 추출하기 (Collectors.groupingBy(), Collectors.mapping()) 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 배송추적 관련 API를 연동하면서 List 에서 Object 중 하나의 필드를 key(String)로 설정하고, 그 외의 필드 중 하나를 value(List)로 삼고 싶었습니다. 상황 @Getter @AllArgsConstructor public class Shipping { private String invoiceNo; private String status; } [ { "invoiceNo" : "invoiceNo1", "status" : "배송준비중" }, { "invoiceNo" : "invoiceNo2", "status" : "배송준비중" }, { "invoice..
[GitHub] git pull이 안되는 경우 (fatal: refusing to merge unrelated histories) 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 GitHub에서 Repository를 처음 생성하면 main branch로 생깁니다. (master에서 바뀐지 얼마안되었다고 합니다.) 인텔리제이에서는 처음 git을 init으로 저장소를 초기화 하게 되면 기본 branch가 master로 세팅되었습니다. 이를 전에 바로 push를 하게 되니 main, master branch가 나뉘어서 저장되어 이번에는 인텔리제이의 master branch를 main branch로 변경해주었습니다. 하지만 origin에 있는 main branch랑 local에 있는 main branch랑 버전이 맞지 않아 push가 안되면서 충돌이 일..
[JAVA] java.lang.UnsupportedOperationException 에러 해결법 (JAVA 16 toList()) 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 코드를 짜다가 낯선 에러를 발견합니다. list와 list를 addAll()을 해준 것 밖에 없었는데 UnsupportedOperationException이 발생하니 당황했습니다. UnsupportedOperationException의 뜻은 무엇일까? 검색해보니 지원되지 않는 작업을 요청했을 때 발생하는 에러였습니다. 문제발생 원인에 대해서 알고싶어 검색해보니 Arrays.asList() 관련해서 나온 글들을 많이 볼 수 있었습니다. 💡 Arrays.asList()를 addAll() 했을 때 UnsupportedOperationException이 발생하는 원인은? 더보기..