본문 바로가기
Spring framework

[Spring Framework Basic] 3. Spring 프레임워크 개요

by _은하별사탕_ 2020. 11. 30.

 

! SKPlanet Tacademy 의 강의를 요약하고 덧붙인 내용정리 !

( 2강은 환경설정이니 패스 )

 

www.youtube.com/watch?v=yoQwdSEGoK0

 

 


 

 

Spring Framework란?

 

- Java 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크이다.

 

- 애플리케이션 프레임워크 :

특정 계층이나 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크

 

- 경량급 프레임워크 :

단순한 웹컨테이너에서도 엔터프라이즈 개발의 고급기술을 대부분 사용할 수 있다.

 

 

 

* Spring 삼각형

 

- 엔터프라이즈 개발의 복잡함을 상대하는 Spring의 전략

 

-> Portable Service Abstraction, DI, AOP, POJO

 

 

 

- Portable Service Abstraction (서비스 추상화) :

트랜잭션 추상화, OXM (Object XML Mapping) 추상화, 데이터 액세스의 Exception 변환 기능 등

기술적인 복잡함은 추상화를 통해 Low Level의 기술 구현 부분과 기술을 사용하는 인터페이스로 분리한다

 

- 객체지향과 DI (Dependency Injection - 의존 관계 주입) :

Spring은 객체지향에 충실한 설계가 가능하도록 단순한 객체 형태로 개발할 수 있고,

DI는 유연하게 확장 가능한 객체를 만들어 두고 그 관계는 외부에서 동적으로 설정해준다

 

- AOP (Aspect Oriented Programming - 관점 지향 프로그래밍) :

AOP는 애플리케이션 로직을 담당하는 코드에 남아 있는 기술 관련 코드를 분리해서

별도의 모듈로 관리하게 해주는 강력한 기술이다

 

- POJO (Plain Old Java Object) :

POJO는 객체지향 원리에 충실하면서, 특정 환경이나 규약에 종속되지 않고 필요에 따라 재활용 될 수 있는 방식으로 설계된 객체

 

 

 

Spring Framework 특징

 

1. 컨테이너 역할

 

- Spring 컨테이너는 JAVA 객체의 Life Cycle을 관리하며, Spring 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다

 

 

2. DI (Dependency Injection) 지원

 

- Spring은 설정 파일이나 어노테이션을 통해서 객체 간의 의존관계를 설정할 수 있도록 하고 있다

 

 

3. AOP (Aspect Oriented Programming) 지원

 

- Spring은 트랜잭션이나 로깅, 보안과 같이 공통적으로 필요로 하는 모듈들을 실제 핵심 모듈에서 분리해서 적용할 수 있다

 

 

4. POJO (Plain Old Java Object) 지원

 

- Spring 컨테이너에 저장되는 JAVA 객체는 특정한 인터페이스를 구현하거나, 특정 클래스를 상속받지 않아도 된다

 

 

5. 트랜잭션 처리를 위한 일관된 방법을 지원

 

- JDBC, JTA 등 어떤 트랜잭션을 사용하던 설정을 통해 정보를 관리하므로 트랜잭션 구현에 상관없이 동일한 코드 사용가능

 

 

6. 영속성(Persistence) 과 관련된 다양한 API 지원

 

- Spring은 MyBatis, Hibernate 등 데이터베이스 처리를 위한 ORM (Object Relational Mapping) 프레임워크들과의 연동 지원

 

 

 

Spring 프레임워크를 구성하는 기능 요소

 

 

- Core 컨테이너 :

 

Spring 프레임워크의 기본 기능을 제공한다

이 모듈에 있는 BeanFactory는 Spring의 기본 컨테이너이면서 스프링 DI의 기반이다

 

 

- AOP :

 

AOP 모듈을 통해 Aspect 지향 프로그래밍을 지원

AOP 모듈은 스프링 애플리케이션에서 Aspect를 개발할 수 있는 기반을 지원

 

 

- ORM :

 

MyBatis, Hibernate, JPA 등 널리 사용되는 ORM 프레임워크와의 연결고리를 제공

ORM 제품들을 Spring의 기능과 조합해서 사용할 수 있도록 해줌

 

 

- DAO :

 

JDBC에 대한 추상화 계층으로 JDBC 코딩이나 예외처리하는 부분을 간편화 시켰으며,

AOP 모듈을 이용해 트랜잭션 관리 서비스도 제공한다

 

 

- Web :

 

일반적인 웹애플리케이션 개발에 필요한 기본 기능을 제공

Webwork나 Struts와 같은 다른 웹 어플리케이션 프레임워크와의 통합을 지원

 

 

- Context :

 

Context 모듈은 BeanFactory의 개념을 확장한 것으로 국제화(I18N) 메시지, 애플리케이션 생명주기 이벤트, 유효성 검증등을 지원

 

 

- WebMVC (Model / View / Controller) :

 

사용자 인터페이스가 애플리케이션 로직과 분리되는 웹 애플리케이션을 만드는 경우에 일반적으로 사용되는 패러다임