스프링의 핵심
스프링 없이 DI 컨테이너 구현해보기
(이전 장에서 이어진다.) 이제 스프링을 사용하여 DI 컨테이너를 구현해본다. AppConfig에 설정을 구성한다는 뜻의 @Configuration을 붙여줬다. 메서드에 @Bean을 붙여준다. 이렇게 하면 스프링 컨테이너에 스프링 빈으로 등록된다. 스프링 컨테이너에
이전에 스프링 없이 만든 DI 컨테이너인 AppConfig는 요청을 할 때 마다 객체를 새로 생성한다. 스프링 컨테이너를 사용하면 해당 클래스의 인스턴스를 딱 1개만 생성되는 것을 보장해준다. 이건을 '싱글톤 컨테이너'라 한다. 싱글톤 패턴을 적용하면 고객의 요청이 올때마다 객체를 생성하는 것이 아니라, 이미 만들어진 객체를 공유해서 효율적으로 사용할 ...
이전까지, 스프링 빈을 스프링 컨테이너에 등록할 때는, 자바 코드의 @Bean을 사용해서 직접 등록했다. 의존관계 주입도 자동으로 됐다. 하지만 모든 객체를 @Bean을 이용해서 등록하는 것은 상당히 귀찮다. 이를 위해 스프링에서는 컴포넌트 스캔이라는 기능을 제공한다. > ### 컴포넌트 스캔 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 기능 그...
의존관계 주입은 크게 4가지 방법이 있다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 메서드 주입 생성자 주입의 특징은, 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다. 불변(final), 필수 의존관계에 사용한다. > 생성자가 딱 1개 있다면 @A
데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 이번 장은 스프링을 통해 초기화 작업과 종료 작업을 어떻게 진행하는지 살펴볼 것이다. > 스프링 빈은 객체를 생성하고, 의존관계 주입을 진행한다. 초기...
빈 스코프란? 지금까지 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때까지 유지된다고 학습했다. 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻한다 > 스프링은 다양한 스코프를 지원한다. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되...