spring

day1 class02 프레임워크

일상다반ㅅㅏ 2018. 12. 15. 15:54

프레임워크

: 사전적 의미는 뼈대 혹은 틀로서 이 의미를 소프트웨어 관점에서 접근하면 아키텍처에 해당하는 골격 코드다.


장점

- 빠른 구현 시간

: 아키텍처에 해당하는 골격 코드를 프레임워크에서 제공하기 때문에 비즈니스 로직만 구현하면 되므로 제한된 시간에 많은 기능을 구현할 수 있다.

- 쉬운 관리

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

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

: 개발 시 아키텍처에 관한 별다른 검증없이 사용 가능하고 유지보수 과정에서 아키텍처가 왜곡되거나 변형되지 않는다.


스프링 프레임워크 탄생 배경

- 이전에는 EJB(Enterprise Java Beans)로 개발되었으나 학습에 많은 시간이 필요하고 개발 및 유지보수도 복잡했다.

- EJB를 제대로 사용하려면 다양한 디자인 패턴을 이해하고 정굥할 수 있어야한다.

- 스프링은 평범한 POJO를 사용하면서도 EJB에서만 가능했던 많은 일을 가능하도록 지원하며 수 많은 디자인 패턴도 적용되어 배포되므로 프레임워크를 사용하는 것 자체가 디자인 패턴을 사용하는 것이다.


POJO(Plain Old Java Object)

: 말 그대로 평범한 옛날 자바 객체를 의미한다. 이해하기 쉽게 NotPOJO인 servlet 클래스 작성규칙을 보면

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

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

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

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

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


스프링 프레임워크의 특징

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

1) 경량(Lightweight)

: 스프링은 여러 개의 모듈로 구성되어 있으며 각 모듈은 하나 이상의 JAR 파일로 구성되어 있다. 몇 개의 JAR 파일만 있으면 개발과 실행이 모두 가능하다. 클래스를 구현하는데 특별한 규칙이 없는 단순하고 가벼운 객체인 POJO형태의 객체를 관리하기 때문에 가볍고 빠르다.

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

: 제어의 역행을 통해 낮은 결합도와 높은 응집도를 유지한다.

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

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

4) 컨테이너(Container)

: 컨테이너는 특정 객체의 생성과 관리를 담당하며 객체 운용에 필요한 다양한 기능을 제공한다.


흠... 설명이 너무 부실하다......

정리가 되면 더 보중해야겠다.