[Test] 테스트 더블(Test Double)
·
Programming/Test
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다. 💭 들어가며Spring 미션을 진행하면서 테스트에 대한 방향을 잡지 못해 초기에는 Layered Architecture의 각 계층에 대해 모두 테스트를 작성했다. 이후 테스트의 격리성에 대한 필요를 느끼며, Service 계층에서 Repository 의존성을 분리하기 위해 테스트 더블(Test Double)을 도입했고, 주로 Fake 객체를 활용했다. 이후 테스트 더블의 종류가 다양하다는 것을 알게 되어 이를 정리하였다. ✅ 테스트 더블이란테스트 더블(Test Double)은 실제 객체를 대체하여 테스트에 사용하는 가짜 객체이다. 실제 객체를 사용하기 어렵거나 부적절한 상황에서 해당 역할을 흉내 내어 테스트를 보조한다. 이 개념은 영화 촬영에..
[Spring] 스프링 빈(Spring Bean), Spring Core 어노테이션
·
Programming/Spring
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다.이 글은 IoC 컨테이너와 의존성 주입(DI)에 대한 기본 이해를 바탕으로 작성되었습니다. 관련 내용은 여기에 정리해 두었으니, 참고해 주시면 감사하겠습니다. 💭 들어가며이전 글에서 IoC 컨테이너와 의존성 주입(DI)에 대해 정리했다. 이번에는 그 내용을 바탕으로 스프링 빈(Spring Bean)에 대해 정리하고, 스프링 빈을 보다 편리하게 관리할 수 있도록 도와주는 Spring Core 어노테이션들도 함께 살펴보고자 한다. ✅ 스프링 빈(Spring Bean)이란스프링 빈(Spring Bean)은 스프링 IoC 컨테이너가 생성하고 관리하는 객체를 의미한다. 이 객체들은 컨테이너에 의해 생명 주기가 관리되며, 의존성 주입(DI)을 통해 서로..
[Spring] IoC 컨테이너, 의존성 주입(DI)
·
Programming/Spring
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다. 💭 들어가며이번 미션을 하며 @Autowired 어노테이션을 언제, 왜 사용하는지 명확하게 설명하지 못하는 나 자신을 보며 의존성 주입에 대한 이해가 부족하다는 걸 느꼈다. 이에 관련 개념들을 다시 정리해보기로 했다. 의존성 주입을 제대로 이해하기 위해서는 IoC 컨테이너에 대한 이해가 선행되어야 하고, 이는 스프링 빈 개념과도 밀접하게 연결되어 있다. 그래서 이번 글에서는 먼저 IoC 컨테이너와 의존성 주입에 대해 정리하고, 다음 글에서 스프링 빈에 대해 다뤄보고자 한다. ✅ IoC 컨테이너란IoC 컨테이너는 객체의 생성, 조립(의존성 주입), 생명주기 관리 등을 개발자 대신 수행해 준다. ▶ IoC란IoC(Inversion of Contr..
[Spring] Spring MVC 어노테이션
·
Programming/Spring
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다. 💭 들어가며레벨 2에 들어가면서 Spring에 대해 깊이 있게 학습할 수 있는 시간이 주어졌다. 이전에도 서버를 직접 배포하고 운영해 본 경험은 있었지만, 정작 어노테이션의 역할을 묻는 질문에는 쉽게 대답하지 못했다. 주어진 코드를 이해하지 않고 그대로 사용하기만 했다는 사실을 깨달았다. 그래서 이번 기회에 Spring MVC의 핵심 어노테이션들과 요청 흐름에 대해 정리해보고자 한다. ✅ Annotated ControllersSpring MVC는 어노테이션 기반의 프로그래밍 모델을 제공하여, 개발자가 요청 매핑, 요청 데이터 처리, 예외 처리 등을 어노테이션을 통해 간결하게 구현할 수 있도록 지원한다.이러한 방식에서는 @Controller 또..
[CS] 동기/비동기, 블로킹/논블로킹
·
Programming/CS
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다. 💭 들어가며이번 미션을 진행하면서 처음으로 AtomicLong을 접했다. 왜 AtomicLong을 사용하는지 찾아보니 논블로킹 방식으로 동시성 제어가 가능하기 때문이라고 한다."논블로킹이 뭐지..?" 찾아보니 블로킹(Blocking)과 논블로킹(Non-Blocking)이라는 개념이 있었고, 또 그와 자주 함께 언급되는 개념으로 동기(Synchronous)와 비동기(Asynchronous)도 있었다. 전에도 종종 들어본 키워드들이지만, 제대로 정리해 본 적은 없었던 것 같다. 이번 기회에 헷갈리기 쉬운 이 네 가지 개념들을 정리하고, 각 조합이 실제로 어떻게 동작하는지 이해해보고자 한다. 사실 각각의 개념은 서로 직접적인 비교 대상은 아니다. 그..
[Java] 불변 객체, 값 객체
·
Programming/Java
우아한테크코스 레벨 1에서 학습한 내용을 정리한 글입니다. 💭 들어가며블랙잭 미션을 진행하던 중, 배팅 금액처럼 의미가 있는 값을 원시값으로 다루지 말고 Money와 같은 값 객체로 리팩터링해 보라는 리뷰를 받았다. 솔직히 "값 객체"라는 용어는 많이 들어봤지만, "왜 굳이 불변이어야 하지?"라는 의문이 들었고, 해소가 되지 않은 상태에서는 억지로 사용하지 말자고 생각했다. 그러다 이번 미션에서 직접 값 객체를 적용하면서 불변 객체의 장점을 알게 되었고, 이에 대해 좀 더 자세하게 정리해보고자 한다.  ✅ 불변 객체불변 객체란 한 번 생성되면 내부 상태가 절대 바뀌지 않는 객체를 말한다. ▶ 불변 객체의 조건객체의 상태를 변경하는 메서드를 제공하지 않는다.클래스를 확장할 수 없도록 한다.모든 필드는 f..
[Java] Optional
·
Programming/Java
우아한테크코스 레벨 1에서 학습한 내용을 정리한 글입니다. 💭 들어가며장기 미션 리뷰로 Optional 관련 피드백을 받았다. 장기 판에 기물이 없는 경우 null을 반환하게 되면 악명이 자자한 NPE의 위험이 있다고 들어, 이를 방지하고자 Optional을 사용했다. 그런데... Optional 관련 피드백이 마구마구 달렸다. Brain Goetz는 Optional을 만든 의도에 대해, "결과 없음"을 명확하게 표현할 수 있는 방법이 필요한 라이브러리 메서드 반환 유형을 위한 제한된 메커니즘을 제공하는 것이라고 말했다. 하지만 실제로는 사람들이 의도와 다르게 사용하는 경우가 많아 주의할 점이 많다고 한다. (이래서 코틀린을 써야 하는 건가...?)찾아보니 안티패턴이란 안티패턴은 다 내가 쓰고 있던 것..
[Java] 상속, 조합
·
Programming/Java
우아한테크코스 레벨 1에서 학습한 내용을 정리한 글입니다. 💭 들어가며코드 리뷰에서 조합을 사용해 보는 것을 권유받았다. 조합..? 조합에 대해서 전혀 몰랐던 나는 관련 아티클을 무작정 찾아보며 도입을 시도하고, 장단점을 직접 분석해보고자 했다. 찾아보니 객체지향 설계 원칙 중에 "상속보다 조합을 우선하라"라는 말을 발견했다. "대놓고 상속보다 조합을 사용하라고 하네?"라는 생각이 들었지만, 왜 조합을 써야 하는지, 어떤 상황에서 조합이 좋은지 정확히 몰랐기 때문에 이를 정리하고, 실제 미션에 적용해 보기로 했다.  ✅ 상속 (Inheritance)상속은 부모 클래스의 속성과 행동을 자식 클래스가 물려받는 방식이다.🔽 장점부모 클래스의 정의된 로직을 자식 클래스가 그대로 사용할 수 있어 코드 재사용성..
soeun2537
'Programming' 카테고리의 글 목록