스프링이란 ?
Spring Framework는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러가지 서비스를 제공하고 있다. 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자 정부 표준 프레임워크의 기반 기술로서도 쓰이고 있다.
[ 사용 이유 및 장점 ]
- 애플리케이션을 구축하기 위한 경량화된 솔루션을 제공하여 효율적인 개발 환경을 제공한다.
- MVC 패턴, AOP, 잘 구조화된 예외계층 구조를 제공한다.
- 많은 기능들을 제공하지만 모듈화되어 있어 필요한 모듈들을 선택적으로 사용 할 수 있다.
- 자바 및 JVM 환경의 대체 언어들의 효율적이고 쉬운 엔터프라이즈 애플리케이션 개발 환경을 제공한다.
- 패키지들 간의 순환 의존성이 없는 깨끗한 프로젝트 구성을 만들수 있다.
- 만들고자 하는 애플리케이션의 목적에따라 유연하게 아키텍쳐를 구성 할 수 있다.
[ 주요 특징 ]
1. DI(Dependency Injection)
: 의존성 주입이란 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는 것이 아니라, 외부에서 생성된 객체를 주입 시켜 사용하는 방법이다. 즉, 객체가 필요로 하는 어떤 객체를 생성자 혹은 setter를 통해서 주입하는 방법을 말한다. 의존성 주입을 통해서 모듈 간의 결합도를 낮추고 유연성을 높인다.
2. IoC(Inversion of Control)
: 제어의 역행이란 메소드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미하는 것으로 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어 필요에 따라 사용자의 코드를 호출하는 것을 말한다. 간단하게 말하면 프로그램의 제어 흐름 구조가 바뀌는 것이다.
애플리케이션의 느슨한 결합을 도모하는 것 중 하나이며 IoC Container는 사용자가 작성한 메타데이터(xml파일 또는 어노테이션)에 따라 Bean클래스를 생성 및 관리하는 스프링의 핵심 컨포넌트이다.
3. AOP(Aspect-Oriented Programming) 지원
: 관점 지향 프로그래밍이란 애플리케이션 로직을 담당하는 코드에 남아있는 기술 관련 코드를 분리해서 별도의 모듈로 관리하게 해주는 강력한 기술로 애플리케이션에서의 관심사의 분리, 핵심적인 기능에서 부가적인 기능을 분리한다. 분리한 부가기능을 Aspect라는 독특한 모듈형태로 만들어서 설계하고 개발하는 방법이다.
부가기능을 Aspect로 정의하여, 핵심기능에서 부가기능을 분리함으로써 핵심기능을 설계하고 구현할 때 객체지향적인 가치를 지킬 수 있도록 도와주는 개념이다.
4. MVC 패턴
: MVC 패턴이란 Model-View-Controller 패턴을 말하는 것으로 DispatcherServlet이 Controller 역할을 담당하여 각종 요청을 적절한 서비스에 분산시켜주며 이를 각 서비스들이 처리를 하여 결과를 생성하고 그 결과는 다양한 형식의 View 서비스들로 화면에 표시될 수 있다.