ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프레임워크
    SPRING 2021. 5. 20. 13:00

    개인 공부 후 정리 목적인 글입니다.

     

     

    프레임워크란?

     - 사전적 의미  :  뼈대 혹은 틀, 체제

     - 소프트웨어 관점  :  아키텍처에 해당하는 골격 코드

     

    여기서 아키텍처란?  소프트웨어의 관점에서 본 하드웨어의 논리 규격을 나타낸다. 기능적 물리적 구조를 표현한다.

     

     -  애플리케이션을 개발할 때, 가장 중요한 것이 전체 애플리케이션의 구조를 결정하는 아키텍처인데 이 아키텍처에 해당하는 골격 코드를 프레임워크가 제공한다 

     - Solution이 완제품이라면  Framework는 반제품에 해당한다.

     

    - 특정 형태의 소프트웨어 문제를 해결하기 위해 상호협력하는 클래스 프레임과 인터페이스 프레임의 집합

    - 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성되며 컴포넌트들은 재사용이 가능하다.

    - 스켈레톤 코드라고도 불리는데, 특정한 틀을 만들어 놓고 거기에 살을 붙여놓음으로써 프로그램을 만들어 작업시간을 줄여주는것

     

     

     

    프레임워크의 장점

    1. 빠른 구현 시간 - 제한된 시간에 많은 기능을 구현할 수 있다.

    2. 쉬운 관리 - 같은 프레임워크가 적용된 애플리케이션들은 아키텍처가 같으므로 관리하기 쉽다.

    3. 개발자들의 역량 획일화 

    4. 검증된 아키텍처의 재사용과 일관성 유지 

     

     

    자바 기반의 프레임워크(스프링 프레임워크 중심)

    처리 영역 프레임워크 설명
    Presentation Struts UI Layer에 중점을 두고 개발된 MVC(Model View Controller) 프레임워크이다.
    Spring(MVC) Struts와 동일하게 MVC 아키텍처를 제공하는 UI Layer 프레임워크이다.
    하지만 Struts처럼 독립된 프레임워크는 아니고 Spring 프레임워크에 포함된다.
    Business Spring(IoC, AOP) 컨테이너 성격을 가지는 프레임워크이다. Spring의 Ioc와 AOP 모듈을 이용하여 Spring 컨테이너에서 동작하는 엔터프라이즈 비즈니스 컴포넌트를 개발할 수 있다.
    Persistence Hibernate or JPA Hibernate는 완벽한 ORM(Object Relation Mapping) 프레임워크이다.

    ORM 프레임워크SQL 명령어를 프레임워크가 자체적으로 생성하여 DB 연동을 처리한다.

    JPA는 Hibernate를 비롯한 모든 ORM의 공통 인터페이스를 제공하는 자바 표준 API이다.
    Ibatis or Mybatis Ibatis 프레임워크는 개발자가 작성한 SQL 명령어와 자바 객체(VO 혹은 DTO)를 매핑해주는 기능을 제공하며, 기존에 사용하던 SQL 명령어를 재사용하여 개발하는 차세대 프로젝트에 유용하게 적용할 수 있다.

    MybatisIbatis에서 파생된 프레임워크로서 기본 개념과 문법은 거의 같다.

     

    POJO(Plain Old Java Object) : 평범한 옛날 자바 객체 <-> Servlet 클래스

     

    <Servlet 클래스 작성 규칙>

     - javax.servlet, javax.servlet.http 패키지를 import 해야 한다.

     - public 클래스로 선언되어야 한다.

     - Servlet, GenericServlet, HttpServlet 중 하나를 상속해야 한다.

     - 기본 생성자가 있어야 한다.

     - 생명주기에 해당하는 메소드를 재정의(Overriding)한다.

     

     

    스프링의 특징 : IoC와 AOP를 지원하는 경량의 컨테이너 프레임워크

    1. 경량(Lightweight)

     - 크기가 가볍다.

     - 스프링 프레임워크가 POJO(Plain Old Java Object)형태의 객체를 관리하기 때문이다.

     

    2. 제어의 역행(Inversion of Control)

     - 스프링은 제어의 역행을 통해 낮은 결함도를 유지한다. 

     - 유지보수가 편해진다.

     

    3. 관점지향 프로그래밍(Aspect Oriented Programming, AOP)

     - 비즈니스 로직과 각 비즈니스 메소드마다 반복해서 등장하는 공통 로직을 분리함으로써 응집도가 높게 개발할 수 있도록 지원한다.

     

    4. 컨테이너(Container)

     - 특정 객체의 생성과 관리를 담당하며 객체 운용에 필요한 다양한 기능을 제공

     - 객체를 생성하고 객체 간의 의존관계를 관리하는 점에서 스프링은 컨테이너라 할 수 있다.

     

     

     

    IoC(Inversion of Control, 제어의 역행) 컨테이너

    스프링 컨테이너는 서블릿 컨테이너와 유사하게 동작

    1. WEB-INF/web.xml 파일을 로딩하여 구동

    2. 브라우저로부터 /hello.do 요청 수신

    3. hello.HelloServlet 클래스를 찾아 객체를 생성하고 doGet() 메소드 호출

    4. doGet() 메소드 실행 결과를 클라이언트 브라우저로 전송

     

    제어의 역행을 이용하면 소스에서 객체 생성과 의존관계에 대한 코드가 사라져 결과적으로 낮은 결함도의 컴포넌트를 구현할 수 있게 한다.

     

     

    결함도(Coupling)가 높은 프로그램

    결함도 : 하나의 클래스가 다른 클래스와 얼마나 많이 연결되어 있는지를 나타내는 표현,
               결함도가 높은 프로그램은 유지보수가 어렵다.

     

     

    결함도를 낮추기 위한 방법

    1. 다형성(Polymorphism)을 이용하기

    2. 디자인 패턴을 이용하기 

     

     

    'SPRING' 카테고리의 다른 글

    어드바이스 동작 시점  (0) 2021.05.25
    AOP 용어  (0) 2021.05.25
    어노테이션  (0) 2021.05.24
    의존성 주입  (2) 2021.05.21
    스프링 컨테이너  (0) 2021.05.21
Designed by Tistory.