Spring
스프링(Spring)이란, 흔히 스프링 프레임워크를 말하는데 스프링 프레임워크의 주요 특징은 다음과 같다.
- 경량 컨테이너
: 스프링은 자바객체를 담고있는 컨테이너이며, 스프링 컨테이너는 이들 자바 객체의 생성과 소명과 같은 라이플사이클을 관리한다. 언제든지 스프링컨테이너로부터 필요한 객체를 가져와 사용할 수 있다.
- DI(Dependency Injection - 의존성 지원)패턴 지원
: 스프링은 설정파일이나 어노테이션을 통해서 객체간의 의존관계를 설정할 수 있다. 따라서 객체는 의존하고 있는 객체를 직접 생성하거나 검색할 필요가 없다.
- AOP(Aspect Oriented Programming- 관점지향 프로그래밍)지원
: AOP는 문제를 바라보는 관점을 기준으로 프로그래밍하는 기법으로, 문제해결을 위한 핵심기능과 전체에 적용되는 공통기능을 기준으로 나누어 프로그래밍 하는 기법이다.
스프링은 자체적으로 프록시 기반의 AOP를 지원하므로 트랜잭션이나, 로깅, 보안과 같이 여러 모듈에서 공통으로 필요로 하지만, 실제 모듈의 핵심이 아닌 기능들을 분리하여 각 모듈에 적용이 가능하다.
- POJO(Plain Old Java Object)지원
: 특정 인터페이스를 구현하거나 또는 클래스를 상속하지 않는 일반 자바객체를 지원한다.
스프링 컨테이너에 저장되는 자바객체는 특정한 인터페이스를 구현하거나 클래스 상속없이도 사용이 가능하다.
일반적인 자바객체를 칭하기 위한 별칭의 개념
- IoC(Inversion of Control - 제어의 반전)
: 스프링의 핵심기능으로 기존 자바객체생성과 의존관계의 제어권은 개발자에게 있었지만 스프링에서도 객체에 대한 생성과 생명주기를 관리할 수 있는 기능을 제공하고 있으므로 "Spring Container" ,"IoC Container"라고 부르기도 한다.
객체지향 언어에서 Object간 연결관계를 런타임에 결정하며, 객체간의 관계가 느슨하게 연결(loose coupling)된다.
IoC의 구현방법 중 하나가 DI이다.
- 트랜잭션 처리를 위한 일관된 방법을 제공
: JDBC, JTA또는 컨테이너가 제공하는 트랜잭션을 사용하던 설정파일을 통해 트랜잭션 관련정보를 입력하기 때문에 트랜잭션 구현에 상관없이 동일한 코드를 여러환경에서 사용이 가능하다.
- 다양한 API지원
: JDBC를 비롯하여 IBatis, MyBatis, Hibernate, JPA 등 DB처리를 위해 널리 사용되는 라이브러리와 연동을 지원하고 있다.
SpringFramework Module
Spring Core | 스프링 프레임워크의 핵심기능을 제공하며, Core컨테이너의 주요컴포넌트는 BeanFactory이다. |
Spring Context | 국제화된 메시지, Application 생명주기 이벤트, 유효성 검증 등을 지원함으로써, BeanFactory의 개념을 확장한다. |
Spring AOP | 설정 관리 기능을 통해 AOP기능을 스프링프레임워크과 직접 통합시킨다. |
Spring DAO | Spring JDBC DAO추상레이어는 다른 데이터베이스 벤더들의 예외 핸들링과 오류메시지를 관리하는 중요한 예외계층을 제공한다. |
Spring ORM | 스프링프레임워크는 여러 ORM프레임워크에 플러그인되어, Object Relarional 툴(JDO,IBatis)을 제공한다. |
Spring Web | Web Context module은 Application Context module 상위에 구현되어, Web기반 Application context를 제공한다. |
Spring Web MVC | 스프링 프레임워크는 자체적으로 MVC워크를 제공하고 있으며, 스프링만 사용해도 MVC기반의 웹 어플리케이션을 어렵지 않게 개발이 가능하다. |
Container
Container란?
: 객체의 생성, 사용, 소멸에 해당하는 라이프 사이클을 담당하며, 애플리케이션 사용에 필요한 주요기능을 제공한다.
Container의 기능
: 라이프사이클 관리, Dependency 객체 제공, Thread관리, 기타애플리케이션 실행에 필요한 환경
Container의 필요성
: 비즈니스로직 외에 부가적인 기능들에 대해 독립적으로 관리되도록 하기 위함
서비스 lookup이나 Configuration에 대한 일관성을 갖기 위함
서비스 객체를 사용하기 위래 각각 Factory 또는 Singleton 패턴을 직접 구현하지 않아도 됨
** Spring DI Container
: Spring DI Container가 관리하는 객체를 빈(Bean)이라 하고, 이 빈들의 생명주기를 관리하는 의미로 BeanFactory라 한다. 빈팩토리에 여러가지 컨테이너 기능을 추가하여 ApplicationContext라 한다.
- BeanFactory : 빈을 등록/생성/조회/반환, getBean( ) 메소드가 정의되어 있음
- ApplicationContext : BeanFactory를 확장한 인터페이스, BeanFactory보다 널리 쓰인다.빈을 등록/생성/조회/반환하는 기능 뿐만 아니라, 각종 부가서비스를 추가적으로 제공
'WEB > Spring' 카테고리의 다른 글
[Spring] Spring FileUpload + 예제 실습 (0) | 2022.04.24 |
---|---|
[Spring] Spring Interceptor /Filter + 예제 실습 (0) | 2022.04.24 |
[Spring] Spring AOP + 예제 실습 (0) | 2022.04.24 |
[Spring] Spring MVC + 예제 실습 (0) | 2022.04.23 |
[Spring] Spring DI + 예제 실습 (0) | 2022.04.16 |
댓글