본문 바로가기

전체글236

[스프링 핵심 원리 - 기본편] 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴입니다. 그래서 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 합니다. private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 합니다. 싱글톤 패턴을 적용한 예제 public class SingletonService { private static final SingletonService instance = new SingletonService(); public static SingletonService getInstance() { return instance; } private SingletonService() { } public void logic() { System.out.println("싱글톤 객.. 2021. 9. 17.
[스프링 핵심 원리 - 기본편] 웹 애플리케이션과 싱글톤 스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했습니다. 대부분의 스프링 애플리케이션은 웹 애플리케이션입니다. 물론 웹이 아닌 애플리케이션 개발도 얼마든지 개발할 수 있습니다. 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 합니다. 스프링 없는 순수한 DI 컨테이너 테스트 public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); // 1. 조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); // 2. 조회: 호출할 때 마다.. 2021. 9. 17.
[스프링 핵심 원리 - 기본편] 스프링 빈 설정 메타 정보 - BeanDefinition 스프링의 다양한 설정 형식을 지원하는데 그 중심에는 BeanDefinition이라는 추상화가 있습니다. 쉽게 이야기해서 역할과 구현을 개념적으로 나눈 것입니다. XML을 읽어서 BeanDefinition을 만들면 됩니다. 자바 코드를 읽어서 BeanDefinition을 만들면 됩니다. 스프링 컨테이너는 자바 코드인지, XML인지 몰라도 됩니다. 오직 BeanDefinition만 알면 됩니다. BeanDefinition을 빈 설정 메타정보라 합니다. @Bean, 당 각각 하나씩 메타 정보가 생성됩니다. 스프링 컨테이너는 이 메타정보를 기반으로 스프링 빈을 생성합니다. AnnotationConfigApplicationContext는 AnnotatedBeanDefinitionReader를 사용해서 AppCon.. 2021. 9. 17.
[개략적인 규모 측정] 모든 프로그래머가 알아야 하는 응답지연 값 통상적인 컴퓨터에서 구현된 연산들의 응답지연 값 위 수들을 알기 쉽게 시각화 메모리는 빠르지만 디스크는 아직도 느립니다. 디스크 탐색(seek)은 가능한 한 피해야 합니다. 단순한 압축 알고리즘은 빠릅니다. 데이터를 인터넷으로 전송하기 전에 가능하면 압축해야 합니다. 데이터 센터는 보통 여러 지역(region)에 분산되어 있고, 센터들 간에 데이터를 주고받는 데는 시간이 걸립니다. 참조 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2021. 9. 17.