1. 스프링(Spring)
스프링은 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크
애플리케이션 프레임워크는 애플리케이션의 개발을 빠르고 효율적으로 할 수 있도록 애플리케이션의 바탕이 되는 틀과 공통 프로그래밍 모델 기술 API 등을 제공해 준다.
■ 애플리케이션 기본 틀 - 스프링 컨테이너
스프링은 스프링 컨테이너 또는 애플리케이션 컨텍스트라고 불리는 스프링 런타임 엔진을 제공한다. 스프링 컨테이너는 설정정보를 참고로 해서 애플리케이션을 구성하는 오브젝트를 생성하고 관리한다. 스프링 컨테이너는 독립적으로 동작할 수도 있지만 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록햇 사용한다.
스프링을 사용하려면 먼저 스프링 컨테이너를 다루는 방법과 스프링 컨테이너가 애플리케이션 오브젝트를 이용할 수 있도록 설정정보를 작성하는 방법을 알아야 한다.
■ 공통 프로그래밍 모델 - IoC / DI, 서비스 추상화, AOP
프레임워크는 애플리케이션을 구성하는 오브젝트가 생성되고 동작하는 방식에 대한 틀을 제공해 줄 뿐만 아니라, 애플리케이션 코드가 어떻게 작성돼야 하는지에 대한 기준도 제시해 준다. 이런 틀을 보통 프로그래밍 모델이라고 한다. 스프링은 3가지 핵심 프로그래밍 모델을 지원한다.
첫 번째는 IoC/DI라고 불리는 오브젝트의 생명주기와 의존관계에 대한 프로그래밍 모델이다. 스프링은 유연하고 확장성이 뛰어난 코드를 만들 수 있게 도와주는 객체지향 설계 원칙과 디자인 패턴의 핵심 원리를 담고 있는 IoC/DI를 프레임워크의 근간으로 삼고 있다. 스프링 프레임워크에서 동작하는 코드는 IoC/DI 방식을 따라서 작성돼야 스프링이 제공하는 가치를 제대로 누릴 수 있다. 스프링이 직접 제공하는 모든 기술과 API, 심지어 컨테이너도 IoC/DI 방식으로 작성되어 있다. 스프링을 바르게 이해하고 효율적으로 사용하는 데 기본이 되며 중요한 기술이다.
두 번째는 서비스 추상화다. 스프링을 사용하면 환경이나 서버, 특정 기술에 종속되지 않고 이식성이 뛰어나며 유연한 애플리케이션을 만들 수 있는데, 이를 가능하게 해주는 것이 바로 서비스 추상화다. 구체적인 기술과 환경에 종속되지 않도록 유연한 추상 계층을 두는 방법이다.
세 번째는 AOP다. AOP는 애플리케이션 코드에 산재해서 나타나는 부가적인 기능을 독립적으로 모듈화 하는 프로그래밍 모델이다. 스프링은 AOP를 이용해서, 다양한 엔터프라이즈 서비스를 적용하고도 깔끔한 코드를 유지할 수 있게 해 준다.
■ 기술 API
스프링은 엔터프라이즈 애플리케이션을 개발의 다양한 영역에 바로 활용할 수 있는 방대한 양의 기술 API를 제공한다. UI 작성은 물론이고 웹 프레젠테이션 계층, 비즈니스 서비스 계층, 도메인 계층, 데이터 액세스 계층 등에서 필요한 주요 기술을 스프링에서 일관된 방식으로 사용할 수 있도록 지원해 주는 기능과 전략 클래스 등을 제공한다. 스프링이 제공하는 API와 지원 기술은 모두 스프링의 프로그래밍 모델에 따라 작성되어 있기 때문에, 이를 가져다 쓰는 것만으로도 스프링의 프로그래밍 모델을 코드에 자연스럽게 적용할 수 있다. 스프링의 모든 기술은 표준 자바 엔터프라이즈 플랫폼(Java EE)에 기반을 두고 있다. 표준 기술과 더불어 유명 오픈소스 기술과 주요 상용 기술에 대한 지원 기능도 다양하게 제공된다.
스프링을 사용한다는 것
이 세 가지 요소를 적극적으로 활용해서 애플리케이션을 개발한다는 것. 클래스는 스프링 컨테이너 위에서 오브젝트로 만들어져 동작하게 만들고, 코드는 스프링의 프로그래밍 모델을 따라서 작성하고, 엔터프라이즈 기술을 사용할 때는 스프링이 제공하는 기술 API와 서비스를 활용하도록 해주면 된다.
'Study > Spring' 카테고리의 다른 글
[Spring 핵심 원리 - 기본편] @Configuration과 바이트코드 조작의 마법 (0) | 2023.02.19 |
---|---|
[Spring 핵심 원리 - 기본편] @Configuration과 싱글톤 (0) | 2023.02.19 |
[Spring 핵심 원리 - 기본편] 싱글톤 방식의 주의점 (0) | 2023.02.19 |
[Spring 핵심 원리 - 기본편] 싱글톤 컨테이너 (0) | 2023.02.19 |
[Spring 핵심 원리 - 기본편] 싱글톤 패턴 (0) | 2023.02.19 |