티스토리 뷰

반응형

강사 : 김호진 강사님

Spring 프레임워크: 교육 1일차

Spring Framework 이해하기

○ 개요

1. Framework : 애플리케이션을 구현하고 관리하는 환경(틀)

2. Spring Framework : 설정 정보(xml)에 의해 애플리케이션을 구성하고, 객체를 생성하고, 관리하는 주체.

○ 스프링 프레임워크(Spring Framework)의 개념

스프링은 자바 엔터프라이즈 어플리케이션 개발에 사용되는 어플리케이션 프레임워크.

어플리케이션 프레임워크는 어플리케이션 개발을 빠르고 효율적으로 할 수 있도록 어플리케이션의 바탕이 되는 틀과 공통 프로그래밍 모델 그리고 API 등을 제공해준다.

- 어플리케이션의 바탕이 되는 틀 → 스프링 컨테이너

스프링은 스프링 컨테이너 또는 어플리케이션 컨텍스트라고 불리는 스프링 런타임 엔진을 제공한다. 스프링 컨테이너는 설정 정보(XML : 배치 기술서)를 참고해서 어플리케이션을 구성하는 오브젝트(객체)를 생성하고 관리한다. 스프링 컨테이너는 독립적으로 동작할 수도 있지만 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록해서 사용하게 된다.

스프링을 사용하려면 먼저 스프링을 컨테이너를 다루는 방법과 스프링 컨테이너가 어플리케이션 오브젝트를 이용할 수 있도록 설정 정보를 작성하는 방법을 알아야 한다.

==> 설정 정보(xml)에 의해 어플리케이션을 구성하고 객체를 생성, 관리하는 주체.

- 공통 프로그래밍 모델 → IoC(Inversion of Control: 역제어)/DI(Defendency Injection: 의존성 주입), 서비스 추상화, AOP

프레임워크라는 어플리케이션을 구성하는 오브젝트(객체)가 생성되고 동작하는 방식에 대한 틀을 제공해줄 뿐 아니라 어플리케이션 코드가 어떻게 작성되어야 하는지에 대한 기준도 제시한다.

이런 틀을 보통 프로그래밍 모델이라고 한다.

스프링은 세 가지 핵심 프로그래밍 모델을 제공한다. (핵심 철학: 유연성, 핵심 가치)

① IoC/DI 라고 불리는 오브젝트 생명 주기와 의존 관계에 대한 프로그래밍 모델이다.

스프링은 유연하고 확장성이 뛰어난 코드를 만들 수 있게 도와주는 객체지향 설계 원칙과 디자인 패턴의 핵심 원리를 담고 있는 IoC/DI 를 프레임워크의 근간으로 삼고 있다.

스프링 프레임워크에서 동작하는 코드는 IoC/DI 방식을 따라 작성되어야 스프링이 제공하는 가치를 제대로 누릴 수 있다.

스프링이 직접 제공하는 모든 기술과 API, 심지어 컨테이너도 IoC/DI 방식으로 작성되어 있다.

스프링을 바르게 이해하고 효율적으로 사용하는데 기본이 되며 가장 중요한 기술이다.

(IoC)  ==> - 객체 관리의 주체.

  • Inversion of Control : 제어의 역전
  • 객체 생성과 관리를 직접 하는 것이 아니라 클래스 외부에서 만들어진 오브젝트(객체)를 제공받는 입장이 되는 것.
  • Bean : 스프링이 관리하는 대상.
  • Bean Factory : 객체를 관리하는 주체. 일반적으로 이 기능을 확장한 Application Context 를 사용하게 된다.
  • Application Context : Bean Factory 의 확장 버전.
  • 설정 정보 : 어떤 객체들이 관리 대상인지 설정한 정보. XML, Annotation 등을 이용한다. 객체들의 의존 관계도 기술되어 있다.
  • IoC 컨테이너 : 객체를 등록하고 관리하는 공간.

(DI)  ==> - 객체 관리의 방법.

  • 자바에서 객체를 생성하고 관리하는 방법은 모두 has-a 관계를 통해 처리해 왔기 때문에 이들은 모두 의존 관계가 치밀하고 밀접한 상황일 수 밖에 없다. 이 때문에... 이러한 강한 결합 상태는 유연성을 떨어뜨리는 결과를 초래하게 된다. 이러한 결합 상태를 풀어주는 과정(방법)이 바로 DI 이다.
  • Dependency Injection : 의존성 주입(의존관계 주입)
  • 의존관계 주입 : 의존 객체를... 이 객체를 사용하는 객체에... 외부에서 주입하는 액션(상태)
  • 의존관계 : A 가 실행되기 위해서 B 를 필요로 하는 상태
  • 의존객체 : A 입장에서의 의존객체는 B (주입되는 객체)
  • → 우선... A 객체에 B 객체의 주소를 넘겨줌으로써 B 객체를 사용하게 된다면 A 객체는 여전히 B 객체를 사용하는 데는 문제가 없고, B 객체는 A 객체와의 결합 상태가 느슨해진다고 할 수 있다. 이 때, 넘겨주는 방법은 생성자 또는 setter() 메소드를 이용하는 방법이 있다. DI 를 위해 객체는 작은 객체부터 생성해서 큰 객체로 DI 하게 된다. 이 때, 완성된 오브젝트(객체)가 만들어질 때 까지 객체를 관리할 주체가 필요하게 되는데 그 역할을 하는 것이 바로 컨테이너인 것이다.

② 서비스 추상화

스프링을 사용하면 환경이나 서버, 특정 기술에 종속되지 않고 이식성이 뛰어나며 유연한 어플리케이션을 만들 수 있게 되는데, 이를 가능하게 해 주는 것이 바로 서비스 추상화이다. 구체적인 기술과 환경에 종속되지 않도록 유연한 추상 계층을 두는 방법이다.

③ AOP(Aspect Oriented Programming: 관점 지향 프로그래밍)

AOP 는 어플리케이션 코드에 산재해서 나타나는 부가적인 기능을 독립적인 상태로 모듈화하는 프로그래밍 모델이다.

스프링은 AOP 를 이용해서 다양한 엔터프라이즈 서비스를 적용하고도 깔끔한 코드를 유지할 수 있게 해준다.

관점 지향이 객체 지향 프로그램 안에 포함되어 있다고 생각할 수 있도록 하자.

주 업무와 보조 업무를 횡으로 나누는 작업이 포함된다.

- 기술 API

스프링은 엔터프라이즈 어플리케이션 개발의 다양한 영역에 바로 적용할 수 있는 방대한 양의 기술 API 를 제공한다.

UI 작성은 물론이고, 웹 프레젠테이션 계층, 비즈니스 서비스 계층, 기반 서비스 계층, 도메인 계층, 데이터 액세스 계층 등에서 필요한 주요 기술을 스프링에서 일관된 방식으로 사용할 수 있도록 지원해주는 기능과 전략 클래스를 제공한다.

스프링이 제공하는 API 와 지원 기술은 모두 스프링 프로그래밍 모델에 때라 작성되었기 때문에 이것들을 가져다 쓰는 것 만으로도 스프링 프로그래밍 모델을 코드에 자연스럽게 적용할 수 있다.

스프링의 모든 기술은 표준 자바 엔터프라이즈 플랫폼(Java EE) 에 기술을 두고 있다.

표준 기술과 더불어 유명 오픈소스 기술과 주요 상용 기술에 대한 지원 기능도 다양하게 제공된다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함