학습목표
* 스프링 프레임워크의 정의와 전략
* 스프링 프레임워크의 특징
* 스프링 프레임워크의 기능요소
스프링 프레임워크란 ?
* 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스
* 경량급 애플리케이션 프레임워크 이다.
애플리케이션 프레임워크
* 특정 계층이나 기술, 업무 분야에 국한되지 않고,
어플리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말한다.
경량급 프레임워크
* 단순한 웹컨테이너에서도 엔터프라이즈 개발의 고급기술을
대부분 사용할 수 있다.
엔터프라이즈 개발 용이
*개발자가 복잡하고 실수하기 쉬운 Low Level(보안, 인증, 트랜잭션처리 등) 에 많이 신경쓰지 않으면서
비지니스로직 개발에 전념할 수 있도록 해준다.
오픈소스
*스프링은 오픈소스의 장점을 충분히 취하면서 동시에
오픈소스 제품의 단점과 한계를 잘 극복한다.
스프링 프레임워크의 전략
엔터프라이즈 개발의 복잡함을 상대하는 Spring의 전략
-> Portable Service Abstraction, DI, AOP, POJO
*Portable Service Abstraction(서비스 추상화)
트랜잭션 추상화, OXM(Object XML Mapping) 추상화, 데이터 액세스의 Exception 변환기능
등 기술적인 복잡함은 추상화를 통해 Low Level 의 기술 구현부분과 기술을 사용하는 인터페이스로 분리한다.
*DI(Dependency Injection)
스프링은 객체지향에 충실한 설계가 가능하도록 단순한 객체 형태로 개발할 수 있고,
DI는 유연하게 확장 가능한 객체를 만들어두고 그 관계는 외부(컨테이너)에서 다이내믹하게 설정해준다.
*AOP(관점지향프로그래밍)
애플리케이션 로직을 담당하는 코드에 남아있는 기술
관련 코드를 분리해서 별도의 모듈로 관리하게 해주는 강력한 기술이다.
*POJO(오래된 자바 오브젝트)
POJO는 객체지향 원리에 충실하면서, 특정환경이나 규약에 종속되지 않고
필요에 따라 재활용 될 수 있는 방식으로 설계된 객체이다.
스프링의 특징
*컨테이너 역할
스프링 컨테이너는 Java객체의 LifeCycle을 관리하며, 스프링 컨테이너로 부터 필요한 객체를 가져와 사용할 수 있다.
*DI 지원
Spring은 설정 파일(XML)이나 어노테이션(@)을
통해서 객체간의 의존관계를 설정할 수 있도록 하고 있다.
*AOP 지원
스프링은 트랜잭션이나 로깅,보안과 같이 공통적으로 필요로 하는
모듈들을 실제 핵심 모듈에서 분리해서 적용할 수 있다.
*POJO 지원
스프링 컨테이너에 저장되는 자바객체는 특정한 인터페이스를 구현하거나,
특정 클래스를 상속받지 않아도 된다.
*트랜잭션 처리를 위한 일관된 방법을 지원
JDBC,JTA 등 어떤 트랜잭션을 사용하던 설정을 통해 정보를 관리하므로
트랜잭션 구현에 상관없이 동일한 코드 사용가능
*영속성과 관련된 다양한 API지원
스프링은 마이바티스,하이버네이트 등 데이터베이스처리를 위한
ORM 프레임워크들과의 연동 지원
스프링을 구성하는 기능,요소
*Core컨테이너
1.스프링프레임워크의 기본기능 제공
2.이 모듈에 있는 BeanFactory는 Spring의 기본 컨테이너면서
스프링 DI기반이다.
*Spring AOP
1.AOP모듈을 통해 Aspect 지향 프로그래밍을 지원한다.
2.AOP모듈은 스프링 애플리케이션에서 Aspect를 개발할 수 있는
기반을 지원한다.
*ORM
1.MyBatis,Hibernate,JPA등 널리 사용되는 ORM프레임워크와의
연결고리를 제공하고 기능을 조합하여 사용할 수 있다.
*DAO
1.JDBC에 대한 추상화 계층으로 JDBC 코딩이나 예외처리 하는 부분을
간편화 시켰으며, AOP 모듈을 이용해 트랜잭션 관리서비스도 제공한다.
*Web
1.일반적인 웹애플리케이션 개발에 필요한 기본기능을 제공한다.
2.Webwork나 Struts와 같은 다른 웹애플리케이션 프레임워크와의
통합을 지원한다.
*Context
1.Context모듈은 BeanFactory의 개념을 확장한 것으로 국제화메
시지, 애플리케이션 생명주기 이벤트, 유효성 검증 등을 지원한다.
*WebMVC
1.사용자 인터페이스가 애플리케이션 로직과 분리되는 웹 애플리케이션을
만드는 경우에 일반적으로 사용되는 패러다임이다.