전체 글88 [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. Parameter와 Argument 0. 기본적인 개념에 확신이 없어서는 안 된다. 제대로 정리하지 않아 애매하게 알고 있었던 Parameter와 Argument에 대해 제대로 정리하고 넘어가도록 한다. 1. Parameter 파라미터는 함수에 입력으로 제공되는 데이터 중 하나를 참조하기 위하여 함수에서 사용되는 특수한 종류의 변수입니다. 일반적으로 메서드의 시그니처(메서드 선언)에 파라미터의 목록이 포함됩니다. add라는 메서드를 정의해보겠습니다.public int add(int x, int y) { return x + y; } 이 때 x와 y가 파라미터, 즉 매개변수가 됩니다. 2. Argument 아규먼트, 즉 인수는 메서드 호출시 실제 입력으로 제공되는 값 입니다. 매번 메서드가 호출될 때마다 연관된 매개변수에 인수가 할당됩니다. .. 2023. 6. 20. [TIL 06/20] IoC, DI, ApplicationContext IoC 애플리케이션의 제어 흐름을 직접 관리하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(Inversion of Control)이라 한다. 객체가 자신이 사용할 객체를 선택하거나 생성하지 않는다. 생성한 코드에서는 OrderService가 어떤 OrderRepository를 사용할지, 어떤 ItemService를 사용할지 직접 선택하거나 객체를 생성하지 않는다. OrderService는 묵묵히 자신의 로직을 실행하는 역할만을 담당한다. 객체를 만드는 책임은 오롯이 설정 파일로써 작성한 AppConfig가 가지고 있게 된다. 이것이 제어의 역전이 발생한 상황이고 이러한 IoC를 가능하게 하는 공간을 IoC 컨테이너라고 부른다. IoC 컨테이너에서 개별 객체간의 의존 관계 설정이 이루어지고 객체의 생.. 2023. 6. 20. [디자인 패턴] 옵저버 패턴 옵저버 패턴은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one to many) 의존성을 정의합니다. 옵저버 패턴은 주제(Subject)와 옵저버(Observer) 간의 일대다 관계로 구성됩니다. 주제의 상태가 바뀌면 옵저버에게 정보가 제공됩니다. public interface Subject { void registerObserver(Observer o); void removeObserver(Observer o); void notifyObserver(); } public interface Observer { void update(); } Subject 인터페이스 옵저버를 등록하고, 삭제하고, 상태가 변화했음을 알립니다. Observer.. 2023. 6. 19. 이전 1 ··· 6 7 8 9 10 11 12 ··· 15 다음