윤제니

Spring - Framework구조, Spring Framework 구성 및 특징, Spring IoC, DI, DL, Aop, MVC, DAO 본문

Spring

Spring - Framework구조, Spring Framework 구성 및 특징, Spring IoC, DI, DL, Aop, MVC, DAO

꿈다루 2020. 5. 12. 14:34

Framework

  • 프로그램을 좀 더 쉽게 만들 수 있도록 다양한 기능을 미리 제공하는 프로그램의 보조적인 기능(컴포넌트)들의 모임
  • 프로그램을 만들어야 할 때 거쳐가야하는 과정이 있는데 그 과정을 미리 만들어 놓은 것 (입력 -> 처리 -> 결과)
  • 뼈대, 골격, 구조 => 개발의 기본이 되는 뼈대구조를 제공 
  • 생산성 향상 및 관리 편리
  • 대용량 시스템에 사용
  • 엔터프라이즈 애플리케이션 Framework + 화이트 박스 Framework + 통합 Framework

 

Framework 분류 

분류 Framework
 계층 에 따른 분류 시스템 인프라스트럭처 Framework
미들웨어 통합 Framework
엔터프라이즈 애플리케이션 Framework
 확장 방법 에 따른 분류 화이트 박스 Framework
블랙박스 Framwork 
 처리 영역 에 따른 분류 기능 Framework
지원 Framework
통합 Framework

 

Spring Framework - Enterprise Framework

  • 다양한 컴퍼넌트의 기능을 제공하는 통합적인 프레임워크 (다양한 형태의 프로그램 생성 가능)
  • 웹 어플리케이션 만들때 많이 사용(Spring MVC)
  • 외부에서 지원되는 프로그램과 호환성 좋음
  • Spring Framework의 component : STS (Spring Tool Suit) => STS를 통해 Spring Project 제공 받을 수 있다.

 

Spring Framework 구성 및 특성 

  • 자바 EE기반오픈소스 Framework
  • 모든 자바 애플리케이션에서 단순성, 테스트 용이성, 느슨한 결합성(IoC)의 측면에서 Spring 이점을 얻을 수 있음
  • 간단한 컴포넌트로 복잡한 애플리케이션 구성 및 설정 가능 

 

▶ Spring Core

 

 * Spring IoC(Inversion of Control) ★ 가장 기본 및 핵심 기술(Core) ★

  • 의존성 주입 (IoC : 제어의 역행 - 클래스를 이용하여 인스턴스를 new 연산자를 사용해 생성 하였지만, Spring Container미리 인스턴스를 생성 후 포함관계 존재 시 관계를 맺어주는 역할을 함) 

  • XML 설정 파일을 통해 객체간의 의존관계 설정 가능
  • 객체는 의존하고 있는 객체를 직접 생성 및 검색할 필요가 없음
  • 제어권의 역전 / 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미
  • 컴포넌트 의존관계 결정(Component dependency resolution), 설정(configuration) 및 생명주기(life Cycle)를 해결하기 위한 디자인 패턴 

 

* IoC 컨테이너 *

 : 스프링 프레임워크도 객체에 대한 생성 및 생성주기를 관리 할 수 있는 기능을 제공. 즉, IoC 컨테이너 기능을 제공

  • IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리
  • POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 갖는다.
  • 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡김

 

DL
(Dependency Lookup)
저장소에 저장되어 있는 Bean에 접근 하기위해 컨테이너가 제공하는 API이용하여 Bean을 검색하는 것 
DI
(Dependency Injection)
각 클래스간의 의존관계를 빈설정(Bean Definition)정보를 바탕으로 컨테이너가 자동으로 연결

객체 래퍼런스를 컨테이너로 부터 주입 받아, 실행 시 동적을 의존관계 생성

컨테이너가 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입해 주는 것

* 장점 *
코드가 단순, 컴포넌트 간의 결합도 제거 

 

* Spring DI 컨테이너 *

Spring DI 컨테이너가 관리하는 객체빈(bean)이라 하고, 빈(bean)들을 관리한다는 의미컨테이너를 

빈 팩토리(Bean Factory)라고 부른다.

Bean Factory에 여러가지 컨테이너 기능을 추가 => ★ Application Context ★

 Bean Factory  * Bean을 등록, 생성, 조회, 반환 관리
* 보통은 BeanFactory를 바로 사용하지 않고, 확장한 Application Context를 사용
* getBean()메소드가 정의되어 있음
 Application Context  * Bean을 등록, 생성, 조회, 반환 관리
* Spring의 각종 부가서비스를 추가로 제공함
* Spring이 제공하는 Application Context 구현 클래스 여러가지 존재 

 

 

▶ Spring Aop(Aspect Oriented Programming)

  • 관점지향 프로그램(프로그램을 나눠서 결합하는 방법)
  • 로깅, 보안, 트랜젝션과 같은 공통 기능비즈니스 모듈로 부터 분리하여 각각 모듈에 적용 기능
    • 따로 분리해서 작성하고 필요할 때 마다 불러서 사용
    • 중복된 코드 최소화oop의 문제점을 보완 
코드  핵심관심 코드  원하는 핵심 기능
 횡단관심 코드  사용자가 원하는 기능은 아니지만 보조적으로 
나중에 개발자에게 필요한 기능 (기록, 보안, 트랜젝션)

 

▶ Spring MVC(Model View Control) ★중요

  • MVC 웹 어플리케이션 개발을 지원하기 위한 모듈
  • 다양한 View 기술들을 사용하기 위한 API제공  ex) JSP, Tiles 등 

 

▶ Spring DAO

  • DAO를 만들어 주는 컴퍼넌트
  • Spring ORM(외부적인 기능을 가져다 사용하는 기능을 제공)  ex) MyBatis 등
  • Spring JDBC를 빌드 시켜야 사용 가능 

 

Spring Version

 : 버전이 업데이트 될 때마다 새로운 기능 추가

   * 2.5 : MVC 기능 추가

   * 3.0 : Security 보안 기능 추가

   * 4.0 : Rest 기능 추가(클라이언트의 요청을 JSON으로 응답하는 형태로 만들 수 있는 기능)

   * 5.x : 클라우드 기능 추가(개인이 공용 컴퓨터에서 작업 가능하도록 만들어줌) => 개인이 관리 하지 않아도 됨! 

            (예로 windows 운영체제를 통해 word, game 등 작업 가능하지만 windows 서버의 문제가 발생 시)

             => 프로그램 재설치 및 데이터 날라가는 현상 발생 => 보완 : 클라우드 시스템 

 

 

Spring Framework 개발 환경

 : 자바 기반의 어플리케이션 개발 프로그램

  • JDK
  • Eclipse
  • WAS(Apache Tomcat)
  • DBMS
  • Spring Library
  • iBatis Library
  • Hibernate Library