분류 전체보기129 스프링 의존성 주입: @Autowired vs @RequiredArgsConstructor + 단위 테스트 예제 스프링에서는 객체 간 의존성을 주입할 때 여러 방법이 있지만, 대표적으로 **필드 주입(@Autowired)**과 **생성자 주입(@RequiredArgsConstructor)**이 있습니다. 겉으로는 어노테이션 하나 차이처럼 보이지만, 동작과 장단점은 크게 다릅니다.1. 필드 주입: @Autowired @Servicepublic class UserService { @Autowired private UserRepository repository; public String getUserName(Long id) { return repository.findNameById(id); }}스프링이 리플렉션으로 필드에 값 주입final 필드 불가능 → 값 변경 가능단위 테스트 어려움.. 2025. 9. 24. [Java] 특정 문자 포함 여부 확인하기 String.contains() vs StringUtils.contains() Java에서 문자열 검색할 때 contains()는 자주 쓰이는 메서드다. 하지만 실무에선 예상 못한 NullPointerException이 발생할 수 있어서 주의가 필요하다. 💥 문제 상황: null을 contains에 넣으면?java복사편집String id = null; boolean result = "abc".contains(id); // 💥 여기서 NPE 발생 String.contains(CharSequence s)는 내부에서 indexOf(s)를 호출하는데,이때 s가 null이면 바로 NullPointerException이 발생한다.즉, null 체크 없이 contains 사용하면 예외 터짐✅ 해결 방법 1: null 체크 후 containsjava복사편집if (id != null && "a.. 2025. 7. 23. [Vue3] composables 역할 개발을 하다보면 여러군데서 똑같이 유효성체크를 할 일이 생기는데 이번에 개발을 하면서 composables 모듈을 하나 말들어서 공통화 했음composables란 재사용 가능한 로직(함수)을 분리해 놓은 모듈로 Composition API를 기반으로 재사용 가능한 함수들을 뜻한다. 이름에서 알 수 있듯이 여러 로직을 "조합(composition)" 할 수 있도록 구성된다.composable을 만들 때 지켜야 할 규칙이 있는데1. 반드시 setup() 함수에서 호출할 것2. 컴포넌트 외부에서 선언될 것3. 이름은 보통 use~ 형태로 4. 반응형 데이터는 ref또는 reactive로 선언해서 반환디렉토리는 아래와 같이 만들면 된다.src/ ├── composables/ │ ├── useCounter... 2025. 7. 3. [Elastic Search] 역인덱스 엘라스틱서치(Elasticsearch)에서 역인덱스(inverted index)는 데이터를 효율적으로 검색할 수 있도록 구성된 핵심 구성 요소입니다. 역인덱스는 주어진 검색어에 대한 문서를 빠르게 찾기 위해 사용됩니다. 즉, 키워드를 통해 문서를 찾아내는 방식입니다. 1. 문서 색인(Indexing): 엘라스틱서치에서 문서가 색인될 때, 문서의 각 단어는 해당 단어가 나타난 문서 ID와 함께 역인덱스에 추가됩니다. 2. 토큰화(Tokenization): 문서의 텍스트는 토큰화되어 개별 단어로 분할됩니다. 예를 들어, "The quick brown fox"라는 문장은 "The", "quick", "brown", "fox"로 토큰화됩니다. 3. 어휘(Vocabulary) 구성: 모든 문서에서 발견된 고유한 .. 2024. 2. 10. [DB] 정규화와 비정규화 1. 정규화란? 데이터베이스 설계에서 중복을 최소화하고 데이터 일관성을 유지하기 위해 데이터를 구조화하는 프로세스입니다. 주로 관계형 데이터베이스에서 사용되며, 관련 테이블 간의 종속성을 제거하여 데이터 무결성을 향상 정규화의 목적: 중복 제거: 데이터베이스에 중복된 데이터를 피하여 저장공간을 절약하고 데이터 일관성을 유지합니다. 삽입, 갱신, 삭제 이상 방지: 데이터가 갱신되거나 삭제될 때 발생할 수 있는 이상 현상을 최소화합니다. 검색 효율 향상: 쿼리의 성능을 향상시켜 데이터 검색 속도를 개선합니다. 2. 비정규화란? 비정규화는 데이터베이스 설계에서 정규화된 데이터 모델을 일부로 건너뛰거나 조정하여 성능을 향상시키는 프로세스입니다. 정규화된 데이터 모델은 중복을 최소화하고 데이터 일관성을 유지하기 .. 2024. 2. 10. 삶의 의미는 어디에나 있다 - "빅터 프랭클의 죽음의 수용소에서"/빅터 프랭클 몇년 전에 잠깐 시간을 보내러 들렀던 서점에서 우연히 이 책을 읽은 적이 있다.  나치의 강제 수용소에서 기적적으로 살아 돌아온 정신과 의사, 그가 우리에게 하고싶었던 말은 무엇이었을지 궁 금했다.  그렇게 짧게 몇페이지를 읽고나서는 그 이후로 거의 잊고 지내다가 몇일 전 책 한권을 사야겠다는 생각으로 서점을 구경하다가 또다시 내 눈에 들어온 책!    책은 크게 두부분으로 나눠지는데 하나는 강제수용소에서의 경험이고 다른 하나는 로고테라피에 대한 상세한 설명이다.  내 예상보다 책은 조금 더 어렵게 쓰여졌다. 특히 로고테라피에 대한 설명부분은!  하지만 전반적으로 관통하는 하나의 메세지는 삶의 의미가 있다면 어떤 환경에서도 살아갈 수 있다는 것이다. 그리고 그 삶의 의미는 내가 삶에게 물어봐.. 2023. 11. 26. [북리뷰] 동양인문학, 어렵지 않아 - "명심보감 인문학"/한정주 언제부터인지 인문학 이라는 학문에 대해서 많은 사람들이 관심을 가지게 되었다.  기억을 되돌아보면 나는 인문학을 라틴어 수업이라는 책으로 처음 접했던 것 같다.  그 이후에 수많은 인문학 도서들을 만나고 또 최근에 '니체의 말' 이라는 책을 읽기도 했지만 동양인문학에 대한 책은 접해본 적이 없었다.   명심보감 인문학은 내가 처음으로 접한 동양인문학 책이다.  동양인문학이라고 하니 왠지 모르게 어려운 책이라고 생각했는데 읽고나니 전혀! 나는 이 책을 초등생부터 직장인까지 모두에게 추천하고 싶다. •ᴗ•  명심보감이라는 책은 누구나 한번쯤은 들어보았을 것이다. 고려 때 어린이들의 학습을 위하여 중국 고전에 나온 선현들의 금언(金言)·명구를 편집하여 만든 책으로 알려져있다.  다만 저자는 한걸.. 2023. 11. 26. [북리뷰] 미술에 흥미를 가져볼까 한다면 - "방구석 미술관"/조원재 서점에 방문하면 베스트셀러에서 종종 보았던 책이라 한번 쯤 읽어보고 싶었다.  특히 평소 미술사나 미술관 전시회를 좋아해서 관련 책, 영화, 다큐 등 부담없이 즐겼던 나로서는 마다하지 않을 수 없던 책! (ง •_•)ง 이 책은 전반적인 미술사나 이론을 다룬다기보다 14명의 화가를 소개하며 그들의 작품과 일생을 통해 미술에 관심을 가지기 어려웠던(?) 혹은 관심은 있으나 어디서부터 시작해야 할지 모르던 이들에게 '그리 어렵지 않으니 함께 가보자!' 라고 말하는 책이다.  특히 코로나 이전에 (흑흑) 다녀왔던 유럽여행이 생각나서 더 재밌게 읽을 수 있었는데 오스트리아 여행 당시 보았던 클림트 키스 작품만 기억하고 있다가 이 책을 통해 클림트 화가에 대한 철학을 알 수 있어서 좋았다.  기존에 잘 알.. 2023. 11. 26. [북리뷰] 경제공부에 빠져보자 - "경제기사 궁금증 300문 300답"/곽해선 사실 나는 경제하면 아예 무지하고 경제뉴스를 챙겨보는 편도 아니었는데  이대로 간다면 나중에 정말 바보가 되거나 혹은 내 아이에게 아무것도 알려줄 수 없을 까봐 경제공부를 시작해봐야겠다고 생각했다!  주식이나 부동산에 투자하는 건 아니구 지금은 경제 책과 경제 기사를 틈틈이 읽으며 공부중이다 (ง •̀_•́)ง  내가 처음으로 고른 경제도서는 경제기사 궁금증 300문 300답 그 이유는 애초에 내 목적이 경제기사를 읽으며 이해가 안되는 부분이 없는 게 목표였기 때문이다 ㅋㅋ 이 책이 엄청 두껍긴 한데 경제에 대한 지식 설명과 중간에 실제 기사도 같이 해석해주고 있어서 공부하기 편하다!  처음 구입하고 며칠은 읽기 어려워서 정말 조금씩 읽었는데 점점 속도가 붙기 시작하더니 지금은 잘 읽히고 있다 .. 2023. 11. 26. 이전 1 2 3 4 ··· 15 다음