전체 글(619)
-
SpringBootTest에서 생성자 주입 시 @Autowired를 명시해야하는 이유
테스트에서 생성자 주입을 인식하지 못한다? 컨트롤러 테스트 코드 개선을 진행하다 다음과 같은 예외를 발견했습니다. 해당 예외는 테스트를 실행하자마자 발생했고, 내용을 확인해보니 파라미터를 제대로 등록하지 못했다는 내용이 적혀있었습니다. 빈 주입 과정이 올바르게 동작하지 못한다고 생각해 곧바로 테스트 코드의 필드와 생성자 부분을 확인했습니다. 생성자는 하나만 사용하고 있었고, 파라미터로 전달받는 값들 또한 모두 빈으로 등록되어있었습니다. 스프링 빈 생성자 주입 스프링에서 생성자를 하나만 작성하고, 그 파라미터가 모두 빈으로 등록이 되어있다면 @Autowired를 명시하지 않아도 빈 주입이 가능하다고 공식문서에서는 설명하고 있습니다. 실제 Autowired가 명시된 생성자를 찾아서 등록하는 코드는 빈 후처리..
2024.02.25 -
데이터에 기반해 기능 개발하기(배민상회에 기능 개발 제안하기)
이번에는 제가 기능 개발을 할 때 어떤 식으로 의사결정하는 지에 대해 포스팅해보려고 합니다. 최근에 우아한 형제들 배민상회에 지원을 했었는데요. 그때 배민상회 서비스를 직접 사용해보면서 '개선되면 좋겠다고 생각한 기능'이 있어요. 왜 그렇게 생각했는지, 어떤 식으로 개선해보면 좋을지에 대해 제 생각을 정리하면서 포스팅해보도록 하겠습니다. 모든 일의 궁극적인 목적은 ‘고객창출’과 ‘고객만족’이다. 우아한 형제들에는 '송파구에서 일을 더 잘하는 11가지 방법'이라는 문화가 있습니다. 그 중 10번째 방법으로 적힌 내용이 바로 소제목에도 적힌 '모든 일의 궁극적인 목적은 고객창출과 고객만족이다.'라는 내용이에요. 회사의 목적은 이익 창출이 아닌 고객 창출이며 이를 우선한 결정을 통해서만 지속가능한 성장을 도모..
2023.12.17 -
API 하위 호환성을 어떻게 지킬 것인가??
디깅룸이라는 안드로이드 어플을 7월 달에 어플을 출시하고 지금까지 쭉 운영하고 있습니다. 디깅룸은 사용자의 음악 취향 정보를 수집해 취향에 맞는 음악/영상을 추천해주는 어플입니다. 우아한테크코스 과정 중에 프로젝트로 진행했던 서비스인데요. 우아한테크코스 과정이 끝나더라도 지속적으로 기능을 개선하고 운영해가기로 결정했으니 다들 한번 사용해보세요! API 버저닝은 왜 필요할까? 안드로이드 팀원들과 어플을 개발하는 경우에는 항상 주의해야하는 점이 있습니다. 그것은 바로 API의 하위호환성을 고려해서 배포를 해야한다는 점입니다. api가 변경될 때마다 사용자에게 어플을 강제로 업데이트를 시킬 수는 없는 노릇이니까요. 저희는 이 부분을 놓치고 있었습니다. 처음 어플을 출시할 때는 회원 가입 기능이 있었는데요. 다..
2023.11.19 -
Java Thread, JDK 뒤져보기
오늘 아침 지하철을 타고 오면서 문득 이런 궁금증이 떠올랐습니다. 'cpu 사양에 따라 가용한 쓰레드의 개수는 한정적일텐데, 자바에서는 어떻게 쓰레드의 개수를 마구마구 늘릴 수 있는거지?' 사실 user thread니 kernel thread니 이런저런 이야기를 들어본 적은 있지만 정확하게 알고있지 않다고 생각해 한번 정리해보고자 합니다. Thread의 종류 Thread는 크게 'User Thread', 'kernel Thread', 'Hardware Thread' 세 유형으로 구분해서 설명할 수 있습니다. User Thread User Thread는 어플리케이션을 통해 생성되는 쓰레드를 의미합니다. 쉽게 생각해서 우리가 Java의 new Thread()를 호출하면 User Thread가 생성된다고 생각..
2023.11.14 -
자바 쓰레드 풀! 그게 뭐야? 어떤 게 있어??
이번에는 `자바 쓰레드 풀`에 관해 글을 작성해보려고 합니다! 정확히 말하면 자바에서 쓰레드 풀이 어떤 식으로 구현되어있는지, 그리고 각각 쓰레드 풀 유형에 대해 알아볼 예정입니다. 쓰레드 풀이란? 쓰레드 풀이란 여러 쓰레드를 사전에 만들어 둔 Pool이라고 생각하면 됩니다. 일반적으로 개발에서의 Pool이라는 용어는 어떤 대상들을 생성한 뒤 놔두는 공간이라고 해석할 수 있는데요. 자바에서의 `스트링 풀`은 `문자열들을 생성한 뒤 놔두는 공간`, `쓰레드 풀`은 `쓰레드들을 생성한 뒤 놔두는 공간`으로 풀이해볼 수 있어요! 위와 같이 Pool을 만들어두는 이유는 비용 때문이라고 요약해볼 수 있어요. 한번 생성할 때의 비용이 비싸지만 자주 사용하는 경우엔 이를 매번 생성해서 사용하기보단 한번 생성한 것을 ..
2023.09.17 -
내가 알고리즘 문제를 푸는 법, 카카오 공채 킬러 문제 추석 트래픽 풀어보기
안녕하세요! 콩하나입니다 ㅎㅎ 오랜만에 블로그 글을 작성해보네요. 요즘 블로깅할만한 거리가 보이지 않아서... 못했다고 하죠 ㅎㅎ 예전에 백준 666일 연속 풀이를 하다가 끊기고 나서 한동안 안풀다가 최근 알고리즘 문제를 다시 풀고 있는데요. 이제는 오히려 스트릭에 구애받지 않고 풀고싶은 문제들을 풀어서 더 편안한 마음으로 스트레스 안받고 푸는 것 같아요 ㅎㅎ 아무튼 지난주에 블랙캣이 18년도 카카오 공채 문제들을 한번 풀어봐라~ 추천해서 지난주에는 18년도 카카오 공채 문제들을 풀어봤습니다. 확실히 최근 문제들이 어렵긴하더라고요... 금요일에는 당시 제일 어려운 난이도로 출제된 '추석 트래픽' 문제를 한번 풀어봤습니다. 그냥 풀어보고 넘기려고 했는데, 요즘 우테코 크루들 중에서도 알고리즘을 푸는 분들도..
2023.08.13