[ Spring ] Spring과 주요 개념 정리
Spring이란?
스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한
오픈소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 불린다.
IoC(Inversion of Control)
IoC란 간단하게 말해서 프로그램의 제어 흐름 구조가 바뀌는 것이다.
일반적으로는 프로그램이 시작되는 시점에서 다음에 사용할 객체를 결정하고 생성해서,
만들어진 객체의 메소드를 호출하는 작업을 반복하게 되는데,
이러한 구조에서 각 객체는 프로그램 흐름을 결정하거나
사용할 객체를 구성하는 작업에 능동적으로 참여하게 된다.
다시 말해, 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조라고 할 수 있다.
IoC는 이와는 달리 제어 흐름의 구조 개념이 정반대라고 할 수 있겠다.
객체는 자신이 사용할 객체를 스스로 생성하거나 선택하지 않고,
자신이 어떻게 만들어지고 어디서 사용될 지 알 수 없다.
이는 각 객체 자신에 대한 모든 제어권한을 특정 대상에게 위임하기 때문이다.
즉, 모든 객체는 제어 권한을 위임받는 특별한 객체에 의해서 만들어지고 사용된다.
IoC 구현 방법
만들어진 객체의 메소드를 호출하는 작업을 반복하게 되는데,
이러한 구조에서 각 객체는 프로그램 흐름을 결정하거나
사용할 객체를 구성하는 작업에 능동적으로 참여하게 된다.
다시 말해, 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조라고 할 수 있다.
IoC는 이와는 달리 제어 흐름의 구조 개념이 정반대라고 할 수 있겠다.
객체는 자신이 사용할 객체를 스스로 생성하거나 선택하지 않고,
자신이 어떻게 만들어지고 어디서 사용될 지 알 수 없다.
이는 각 객체 자신에 대한 모든 제어권한을 특정 대상에게 위임하기 때문이다.
즉, 모든 객체는 제어 권한을 위임받는 특별한 객체에 의해서 만들어지고 사용된다.
IoC 구현 방법
DI(Dependency Injection)
스프링의 가장 기본적인 기능은 객체를 생성하고 초기화하여
필요로 하는 곳에 제공하는 것인데, 바로 이 기능에 DI라는 설계 패턴이 적용되어 있다.
DI는 의존에 대한 설계 패턴인데, 여기서 의존이란,
특정 기능을 수행하기 위해 다른 클래스 또는 타입을 필요로 할 때 이를 의존한다고 말한다.
의존객체를 직접 생성하는 방식은 개발 생산성을 전체적으로 떨어트리는 상황을
발생시킬 수 있기 때문에 DI는 이런 방식의 단점을 보완한
의존객체를 외부로부터 전달받게끔 구현하는 방식이다.
다시 말해, 어떤 객체가 스스로 의존하는 객체를 내부적으로 생성하지 않고,
외부의 누군가가 의존하는 객체를 주입시켜 준다는 의미로 의존주입(DI)이라고 부른다.
다른 말로 객체를 연결(Wire)한다고도 한다.
이 방식의 또 다른 장점은 의존하는 클래스가
아직 미완성인 상태이더라도 테스트를 할 수 있다는 점이다.
주요 용어
Bean
- 스프링 컨테이너가 생성해서 보관하는 객체
Spring Container
- Bean 객체를 관리하는 컨테이너이다. 객체를 컨테이너에 담아두었다가, 필요할 때 사용할 수 있도록 기능한다.
- 스프링은 BeanFactory와 ApplicationContext 이 두 가지 타입의 컨테이너를 제공한다.
Bean Factory
- 빈 객체를 생성하고 처리해주는 기능만을 제공하기 때문에 Application Context를 더 많이 사용함.
Application Context
- Bean Factory에서 보다 확장된 개념의 IoC Container이다. 기존의 Bean Factory 기능 외에 Spring의 여러가지 부가 기능을 사용할 수 있다.
댓글
댓글 쓰기