Dev.World/개발상식&언어

[개발상식] #Spring / JAVA WEB - Back End Framework

_Jbee 2016. 5. 9. 08:52


Spring


Spring이란?
Pivotal Software에서 아파치 라이센스 형태로 제공하는 오픈소스 경량급 애플리케이션 프로젝트이며
자바 애플리케이션 (Standalone 과 웹 애플리케이션 모두 포함)개발에 필요한 서비스를 제공하는 프레임워크이다.
라이센스 비용 없다.
모듈들이 디커플링 되어 있고 테스트가 용이한 프로그램을 만들 수 있다.

핵심
스프링의 핵심은 POJO(Plain Old Java Object)이다.
자바의 단순한 오브젝트를 이용해 애플리케이션의 비즈니스 로직을 구현한다.
부모클래스를 확장하지 않는다.
인터페이스 클래스를 구현하지 않는다.
어노테이션(anotation)을 포함하지 않는다.

특징
IOC(Inversion of Control , 제어의 역전)
애플리케이션 객체를 연결해주고 자동화된 설정 및 집중화된 설정을 제공하는 경량 컨테이너
객체의 생성에서부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다.

DI(Dependency Injection 의존성 주입)

AOP(관점 지향 프로그래밍)
OOP를 더욱 OOP답게, 기능별 모듈화한다.
컨테이너는 일관성을 유지시켜주고 투명한 환경 내에서 느슨한 컴포넌트의 집합에서 복잡한 시스템을 조립할 수 있는 능력을 제공한다.

PSA(Potable Service Abstraction)
환경과 세부 기술의 변화에 관계없이 일관된 방식으로 기술에 접근할 수 있게 해주는 것을 말한다.


스프링 모듈
코어 컨테이너(core container)
Spring 프레임워크의 핵심 기능을 제공한다. 코어 컨테이너의 주요 컴포넌트는 Bean-Factory(Factory 패턴의 구현)이다. 
BeanFactory는 Inversion of Control (IOC) 패턴을 사용하여 애플리케이션의 설정 / 의존성 스팩을
실제 애플리케이션 코드에서 분리시킨다.

Spring 컨텍스트(Spring context)
Spring을 컨테이너로 만든 것이 핵심 모듈의 BeanFactory라면, Spring을 프레임워크로 만든 것은 컨텍스트 모듈이다.
이 모듈은 국제화된 메시지, 애플리케이션 생명주기 이벤트, 유효성 검증 등을 지원함으로써
BeanFactory의 개념을 확장한다.
이 모듈은 이메일, JNDI 접근, EJB 연계, 리모팅, 스케쥴링 등과 같은 다수의 엔터프라이즈 서비스를 추가로 제공한다.
또한 템플릿 프레임워크와의 통합도 지원한다.

Spring AOP 모듈(Spring AOP)

설정 관리 기능을 통해 aspect 지향 프로그래밍 기능을 Spring 프레임워크와 직접 통합시킨다.
따라서 Spring 프레임워크에서 관리되는 모든 객체에서 AOP가 가능하다.
Spring AOP 모듈은 Spring 기반 애플리케이션에서 객체에 트랜잭션 관리 서비스를 제공한다.
Spring AOP에서는 EJB 컴포넌트에 의존하지 않고도 선언적 트랜잭션 관리를 애플리케이션과 결합할 수 있다.

Spring DAO
Spring JDBC DAO 추상 레이어는 다른 데이터베이스 벤더들의 예외 핸들링과 오류 메시지를 관리하는 중요한 예외 계층을 제공한다. 이 예외 계층은 오류 핸들링을 간소화하고, 예외 코드의 양도 줄여준다. Spring DAO의 JDBC 예외는 일반 DAO 예외 계층에 순응한
다.

Spring ORM
프레임워크는 여러 ORM 프레임워크에 플러그인 되어, Object Relational 툴 (JDO, Hibernate, iBatis SQL Map)을 제공한다. 이 모든 것은 Spring의 일반 트랜잭션과 DAO 예외 계층에 순응한다.

Spring Web module
웹 컨텍스트 모듈은 애플리케이션 컨텍스트 모듈의 상단에 구현되어, 웹 기반 애플리케이션에 컨텍스트를 제공한다. Spring 프레임워크는 Jakarta Struts와의 통합을 지원한다.
웹 모듈은 다중 요청을 핸들링하고, 요청 매개변수를 도메인 객체로 바인딩하는 작업을 수월하게 한다.

Spring MVC framework
MVC 프레임워크는 완전한 기능을 갖춘 MVC 구현이다.
MVC 프레임워크는 전략 인터페이스를 통해 설정할 수 있으며, JSP, Velocity, Tiles, iText, POI 같은 다양한 뷰 기술을 허용한다.

단점
어렵다. 기술의 양이 방대하고 같은 기술도 여러 가지 방식으로 지원
무거운 프레임워크.




-..-