1. 자바 기반의 프레임워크
Presentation | Struts | Struts 프레임워크는 UI Layer에 중점을 두고 개발된 MVC 프레임워크 |
Spring(MVC) | Struts와 동일하게 MVC 아키텍처를 제공하는 UI Layer 프레임워크이다. 하지만 Struts처럼 독립된 프레임워크는 아니고 Spring 프레임워크에 포함되어 있다. | |
Business | Spring(IoC, AOP) | Spring은 컨테이너 성격을 가지는 프레임워크이다. Spring의 IoC와 AOP 모듈울 이용하여 Spring 컨테이너에서 동작하는 엔터프라이즈 비즈니스 컴포넌트를 개발할 수 있다. |
Percictence | Hibernate or JPA | Hibernate는 완벽한 ORM(Object Relation Mapping) 프레임워크이다. ORM프레임워크는 SQL명령어를 프레임워크가 자체적으로 생성하여 DB 연동을 처리한다. JPA는 Hibernate를 비롯한 모든 ORM의 공통인터페이스를 제공하는 자바 표준 API이다. |
lbatis or Mybatis | lbatis 프레임워크는 개발자가 작성한 SQL 명령어와 자바 객체(VO 혹은 DTO)를 매핑해주는 기능을 제공하며, 기존에 사용하던 SQL 명령어를 재사용하여 개발하는 차세대 프로젝트에 유용하게 적용할 수 있다. Mybatis는 lbatis에서 파생된 프레임워크로서 기본 개념과 문법은 거의 같다. |
2. 스프링 프레임워크 특징
스피링의 특징을 한 주로 서술하면 "IoC와 AOP를 지원하는 경량의 컨테이너 프레임워크"로 표현할 수 있다.
1) 경량 (Lightweight)
스프링은 여러개의 모듈로 구성되어 있으며, 각 모듈은 하나 이상의 JAR 파일로 구성되어 있다. 그리고 몇 개의 JAR 파일만 있으면 개발과 실행이 모두 가능하다. 따라서 스프링을 이용해서 만든 애플리케이션의 배포 역시 매우 빠르고 쉽다.
스프링을 경량이라고 하는 두번째 이유는 스프링 프레임워크가 POJO형태의 객체를 관리하기 때문이다. POJO는 클래스를 구현하는 특별한 규칙이 없는 단순하고 가벼운 객체이므로 POJO를 관리하는 것은 기존의 EJB객체를 관리하는 것보다 휠씬 가볍고 빠르다.
POJO (Plan Old Java Object) 란??
말 그대로 평범한 옛날 자바 객체를 의미한다. 좀 더 쉽게 이해하기 위해서 반대로 POJO가 아닌 클래스가 무엇인지 이해하면 된다. 대표적인 Not POJO 클래스가 Servlet에서 요구하는 규칙에 맞게 클래스를 만들어야 실행 할 수 있다.
다음은 Servlet 클래스 작성 규칙이다.
- javax.servle, java.servlet.http 패키지를 import해야 한다.
- public 클래스로 선언되어야한다.
- Servlet, GenericServlet, HttpServlet 중 하나를 상속해야 한다.
- 기본 생성자(Default Constructor ) 가 있어야 한다.
- 생명주기에 해당하는 메소드를 재정의( Overriding ) 한다.
2) 제어의 역행(Inversion of Control)
비즈니스 컴포넌트를 개발할 때, 항상 신경쓰는 것이 바로 낮은 결합도와 높은 응집도이다. 스프링은 제어의 역형(IoC) 를 통해 애플리케이션을 구성하는 객체간의 느슨한 결합, 즉 낮은 결합도를 유지한다.
IoC가 적용되기 전에는 애플리케이션 수행에 필요한 객체의 생성이나 객체와 객체 사이의 의존관계를 개발자가 직접 자바 코드로 처리했었다. 하지만 IoC가 적용되면 객체 생성을 자바 코드로 직접 처리하는 것이 아니라 컨테이너가 대신 처리한다. 그리고 객체와 객체 사이의 의존관계 역시 컨테이너가 처리한다. 결과적으로 소스에 의존관계가 면시되지 않으므로 결합도가 떨어져서 유지보수가 편리해진다.
3) 관점지향 프로그래밍 (Aspect Oriented Programming, AOP)
관점지향 프로그래밍은 비즈니스 메소드를 개발할 때, 핵심 비지니스 로직과 각 비즈니스 메소드마다 반복해서 등장하는 공통 로직을 분리함으로써 응집도가 높게 개발할 수 있도록 지원한다.
공통으로 사용하는 기능들을 외부의 독립된 클래스로 분리하고, 해당 기능을 프로그램 코드에 직접 명시하지 않고 선언적으로 처리하여 적용하는 것이 관점지향프로그래밍의 기본 개념이다. 이렇게 되면 공통 기능을 분리하여 관리할 수 있으므로 응집도가 높은 비즈니스 컴포넌트를 만들 수 있을 뿐만 아니라 유지보수를 혁신적으로 향상시킬 수 있다.
4) 컨테이너 (Container)
컨테이너는 특정 객체의 생성과 관리를 담당하며 객체 운용에 필요한 다양한 기능을 제공한다.
컨테이너는 일반적으로 서버안에 포함되어 배포 및 구동된다. 대표적인 컨테이너로 Servlet 객체를 생성하고 관리하는 Sevlet 컨테이너와 EJB 객체를 생성하고 관리하는 EJB컨테이너가 있다.
'spring_project' 카테고리의 다른 글
스프링 IoC (0) | 2021.09.11 |
---|---|
디자인패턴 이용하기 (Factory 패턴) (0) | 2021.09.11 |
다형성 이용하기 (0) | 2021.09.11 |
서블릿 컨테이너의 서블릿 객체관리 (0) | 2021.09.09 |
1. [스프링] 프로젝트 세팅 (0) | 2021.09.08 |