Spring framework 4

스프링 컴포넌트 스캔과 @Autowired

스프링 컴포넌트 스캔과 @Autowired 앞선 포스트에서 스프링 빈을 등록할 때는 자바 코드의 @Bean 을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다. 등록해야할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기도 귀찮고, 설정 정보도 커지고, 누락하는 문제도 발생한다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또 의존관계도 자동으로 주입하는 @Autowired 라는 기능도 제공한다. @Configuration @ComponentScan public class AutoAppConfig { } 앞선 포스트들에서 수동으로 빈을 등록할 때에는 빈들간의 의존 관계를 수동으로 맺어주었다. 그런데 @ComponentScan 을 이용해 자동..

Spring framework 2021.11.04

스프링 싱글톤 컨테이너

스프링 싱글톤 컨테이너 웹 애플리케이션과 싱글톤 스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다. 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 우리가 만들었던 스프링 없는 순수한 DI 컨테이너인 AppConfig 는 요청을 할 때 마다 객체를 새로 생성한다. 고객 트래픽이 초당 100이 나오면 초당 100개의 객체가 생성되고 소멸된다! -> 메모리 낭비가 심하다. 해결방안은 해당 객체가 딱 1개만 생성되고, 공유하도록 설계하면 된다. -> 싱글톤 패턴 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 그래서 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다. private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 ..

Spring framework 2021.11.04

스프링 컨테이너와 스프링 빈

스프링 컨테이너와 스프링 빈 스프링 컨테이너 생성 ApplicationContext 를 스프링 컨테이너라고 한다. ApplicationContext 는 인터페이스이다. 더 정확히는 스프링 컨테이너를 부를 때, BeanFactory, ApplicationContext 로 구분해서 이야기한다. BeanFactory 를 직접 사용하는 경우는 거의 없으므로 일반적으로 ApplicationContext 를 스프링 컨테이너라고 한다. 스프링 컨테이너 생성 스프링 빈 등록 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다. 주의 : 빈 이름은 항상 다른 이름을 부여해야 한다. 같은 이름을 부여하면, 다른 빈이 무시되거나, 기존 빈을 덮어버리거나 설정에 따라 오류가 발생한다. 스프링..

Spring framework 2021.11.04

스프링과 객체지향

스프링과 객체 지향 스프링의 핵심 개념 이 기술을 왜 만들었는가?, 이 기술의 핵심 컨셉은? 스프링은 자바 언어 기반의 프레임워크이다. 자바 언어의 가장 큰 특징은 객체 지향 언어 이다. 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크이다. 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크이다. 좋은 객체 지향 프로그래밍이란? 다형성 ( polymorphism ) 이 진짜 중요하다! 다형성의 예로, 운전자 - 자동차 관계를 보자. 위의 사진과 같이, 운전자는 K3 를 타다가 아반떼를 타도 운전을 할 수 있다. 왜냐면 자동차라는 역할에 대한 구현만 바뀌었기 때문이다. 따라서 자동차가 바뀌어도 운전자한테 전혀 영향을 주지 않는다. 운전자는 자동차 인터페이스에 대해서..

Spring framework 2021.11.04