인터넷 프로토콜 우리는 인터넷을 사용 하면서 한번쯤 IP주소에 대해 들어보았을 것이다. 자세히는 몰라도 인터넷을 사용하기 위해서는 IP 주소가 필요하다는 것은 알고있을 것이다. 그렇다면 IP주소는 무엇이고 왜 사용되는지 알아보자. 위의 그림을 보면 클라이언트와 서버가 등장한다. 클라이언트는 웹 브라우저(익스플로러, 크롬등)를 사용하는 우리를 생...
인터넷과 HTTP 프로토콜
인터넷 통신 지금부터 인터넷이 동작하는 가장 기본적인 원리를 알아보려 한다. 우선 인터넷이란 무엇일까? 인터넷(Internet)은 인터넷 프로토콜(TCP/IP)을 기반으로 하여 전 세계적으로 연결되어있는 컴퓨터 네트워크 통신망을 일컫는 말이다. 그렇다면 인터넷에서 컴퓨터는 어떻게 통신할 수 있을까? 우선 인터넷이 동작하기 위해서는 최소 두대의 컴...
빈 스코프
빈 스코프 빈 스코프는 말 그대로 빈이 존재할 수 있는 범위를 뜻한다. 우리는 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어 컨테이너가 종료될 때 까지 유지된다고 학습했다. 이것은 스프링 빈이 기본적으로 싱클톤 스코프로 생성되기 때문이다. 하지만 때에 따라서는 HTTP 요청마다 다른 빈을 생성해서 써야하거나 매번 사용될 때 마다 빈을 생성하는...
빈 생명주기(Bean Lifecycle)
빈 생명주기 스프링 컨테이너는 빈 객체를 생성하고, 프로퍼티를 할당하고, 초기화를 수행하고, 사용이 끝나면 소멸시키는 일련의 과정을 관리한다. 스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료된다. 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는...
다양한 의존관계 주입
다양한 의존관계 주입 이전 포스팅에서 스프링의 컴포넌트 스캔과 의존관계 주입에 대해 알아 보았다. 스프링은 @Autowired 어노테이션을 통해 편리하게 의존관계를 주입 받을 수 있도록 기능을 제공한다. 이번 포스팅에서는 스프링이 지원하는 다양한 DI 방식을 알아보려 한다. 크게 4가지 방식이 있다. 생성자 주입 수정자 주입(setter ...
컴포넌트 스캔과 의존관계 주입
컴포넌트 스캔(Component Scan) 이번 포스팅에서는 스프링의 컴포넌트 스캔에 대해 알아보려한다. 이전에 우리는 오브젝트 팩토리를 직접 만들고 이를 설정정보로 사용하는 애플리케이션 컨텍스트도 만들어보았다. 그런데 실무에서는 예제와 달리 등록해서 사용해야할 빈이 수십, 수백개가 될 수도 있다. 이럴경우 설정정보가 커지고 누락하는 등의 문제가 ...
싱글톤 레지스트리
싱글톤 레지스트리 이전 까지 우리는 스프링 애플리케이션 컨텍스트에 대해 알아보았다. 애플리케이션 컨텍스트는 오브젝트 팩토리와 비슷한 방식으로 동작하는 IoC 컨테이너이다. 그러면서 동시에 이 애플리케이션 컨텍스트는 싱글톤을 저장하고 관리하는 싱글톤 레지스트리이기도 하다. 싱글톤 패턴(Singleton Pattern) 싱글톤 레지스트리를 알아보기 전...
스프링 빈 조회
스프링 빈 조회 이전 포스팅에서 애플리케이션 컨텍스트에 대해 알아보았고 MemberFacotry를 설정정보로 사용하는 애플리케이션 컨텍스트를 만들어 보았다. 이제 애플리케이션 컨텍스트에서 빈을 가져오는 방법을 알아보자. 애플리케이션 컨텍스트는 빈을 검색하는 다양한 방법을 제공한다. 빈 이름으로 조회 MemberFactory를 설정정보로 사용하는 ...
애플리케이션 컨텍스트
애플리케이션 컨텍스트 스프링에서는 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트를 빈(bean)이라하고 빈의 생성과 관계설정 같은 제어를 담당하는 IoC 오브젝트를 빈 팩토리(bean factory)라고 부른다. 그리고 스프링에서는 빈 팩토리를 확장한 애플리케이션 컨텍스트(application context)를 주로 사용한다. 애플...
스프링의 IoC
스프링의 IoC 스프링은 애플리케이션 개발의 다양한 영역과 기술에 관여한다. 그리고 매우 많은 기능을 제공한다. 하지만 스프링의 핵심을 담당하는 건, 바로 빈 팩토리 또는 애플리케이션 컨텍스트라고 불리는 것이다. 이 두 가지는 우리가 만든 MemberFactory가 하는 일을 좀 더 일반화한 것이라고 설명할 수 있다. 오브젝트 팩토리를 이용한 스프링...