공부방22 [TIL 06/26] 테스트 1. 단위 테스트 단위 테스트는 일반적으로 함수 수준에서 특정 섹션의 기능을 검증하는 테스트를 말합니다. 백엔드 엔지니어가 가장 집중해야하는 테스트 가장 많이 작성해야 하고 가장 중요한 테스트 특정 메서드가 예상대로 작동하는지 확인하기 위해 작성 하나의 메서드에 여러 가지 테스트를 작성할 수 있으며 정상 흐름 뿐만 아니라 예외적인 상황에 대해서도 테스트를 수행한다. 애플리케이션에서 가장 작은 단위의 테스트이며 보편적으로 하나의 클래스에 대해서 테스트하는 것이라 볼 수 있다. 일반적으로 각 테스트에서 주어져야 하는 입력값 혹은 맥락이 있고(given), 테스트하고자 하는 대상 메서드(when), 검증하고자 하는 결과(then)이 있다. 대체로 하나의 객체는 혼자서 일을 하지 않고 다른 객체들과 협력 관계를.. 2023. 6. 29. [TIL 06/23] Logging, Logback 1. Logging 시스템을 작동할 때 시스템 작동 상태의 기록과 보존, 이용자의 습성 조사 및 시스템 동작의 분석 등을 하기 위해 작동 중의 각종 정보를 기록해둘 필요가 있다. 이 기록을 만드는 것을 로깅이라 한다. 즉, 로그 시스템의 사용에 관계된 일련의 사건(이벤트)을 시간의 경과에 따라 기록하는 것이다. 프로그램 개발 중 또는 완료 후에 발생할 수 있는 오류에 대해 디버깅하거나, 운영 중인 프로그램 상태를 모니터링 하기 위해 필요한 정보를 기록하는 것 버그 발생 시 실제 운영중인 애플리케이션에서 어떤 일이 일어났는지 파악하기 어렵기 때문에 로그를 통해서 API 호출 흐름을 파악하고 에러 발생 지점을 찾아내 버그 픽스를 진행할 수 있다. System.out.println()을 사용하면 동기화로 인한.. 2023. 6. 23. [TIL 06/22] Environment, Properties, Profile 1. Environment 스프링은 설정 파일에 대한 접근을 추상화한 Environment를 제공한다. ApplicationContext는 EnvironmentCapable 인터페이스를 상속받아 Environment에 접근할 수 있는 방법을 제공한다. applicationContext.getEnvironment()로 Environment 인스턴스를 얻어와 environment.getProperty(key)를 통해서 값을 조회할 수 있다. Environment는 빈으로 등록되어 있기 때문에 스프링 컨테이너로부터 직접 주입받을 수 있다. Environment를 통해 특정 외부 설정에 종속되지 않고, 일관성 있게 key=value 형식의 외부 설정에 접근할 수 있다. @Configuration public c.. 2023. 6. 22. [TIL 06/21] 컴포넌트 스캔, 빈 스코프, 빈 라이프사이클 1. DI, Circular Dependency Dependency Resolution Process 각 빈에 대한 의존관계는 클래스의 속성이나 생성자, 정적 팩토리 메서드의 인자 형태로 표현될 수 있다. 스프링 컨테이너는 컨테이너가 생성될 때 각 빈의 구성에 대한 유효성 검사를 실시한다. 싱글톤 빈의 경우 스프링 컨테이너가 생성될 때 함께 생성되지만 스코프에 따라 빈이 생성되는 시점이 달라질 수 있다. 또한, 지연 초기화 설정을 통해서 해당 빈이 처음으로 요청될 때 생성되게 하는 것도 가능하다. Circular Dependency 생성자 주입을 주로 사용하는 경우 해결할 수 없는 순환 종속성 시나리오가 발생할 수 있다. A → B, B → A 처럼 A와 B에 대한 빈이 서로 주입되도록 구성한 경우 스프.. 2023. 6. 21. [TIL 06/20] IoC, DI, ApplicationContext IoC 애플리케이션의 제어 흐름을 직접 관리하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(Inversion of Control)이라 한다. 객체가 자신이 사용할 객체를 선택하거나 생성하지 않는다. 생성한 코드에서는 OrderService가 어떤 OrderRepository를 사용할지, 어떤 ItemService를 사용할지 직접 선택하거나 객체를 생성하지 않는다. OrderService는 묵묵히 자신의 로직을 실행하는 역할만을 담당한다. 객체를 만드는 책임은 오롯이 설정 파일로써 작성한 AppConfig가 가지고 있게 된다. 이것이 제어의 역전이 발생한 상황이고 이러한 IoC를 가능하게 하는 공간을 IoC 컨테이너라고 부른다. IoC 컨테이너에서 개별 객체간의 의존 관계 설정이 이루어지고 객체의 생.. 2023. 6. 20. [TIL 06/19] Build 필요한 라이브러리를 다운 받고 classpath에 추가한다. 소스 코드를 컴파일한다. 테스트 코드를 실행하여 작성한 코드에 대한 검증을 수행한다. 컴파일된 코드를 패키징한다. -> .jar / .war 패키징된 파일을 서버나 리포지토리에 배포한다. Build Tool 빌드 툴은 이러한 task 들을 자동화한다. 어떠한 일들을 하겠다는 task에 대해 기술할 수 있으며 해당 파일을 빌드 스크립트라고 부른다. 스크리트 언어로 Maven은 XML, Gradle은 Groovy 또는 Kotlin을 사용한다. Maven 자바 기반의 프로젝트 빌드 툴이다. XML 기반으로 설정 모델을 제공하고 pom.xml에 의해서 정의된다. archetype이라는 프로젝트 템플릿을 제공하여 반복된 설정 작업을 줄여준다... 2023. 6. 19. 이전 1 2 3 4 다음