Study/Spring

[Spring Framework] 스프링 개요

AC 2019. 8. 4. 00:34



드디어 스프링에 들어간다.
앞에서 작성한 포스팅은 스프링을 배우기전의 전반적으로 알아두어야 할 것들이다. 알고 배우는 것과 모르고 배우는 것은 보이는 시야가 다르다고 하지 않았던가 ㅎㅎ..

스프링은 DI 컨테이너와 AOP 등을 구현하는 스프링 프레임워크를 말한다. 구현은 뒷 부분에 나오겠지만, 우선은 지금까지 포스팅한 웹 애플리케이션과 애플리케이션 아키텍처의 관계, 스프링의 필요성과 특징부터 이해하자.

 

 

 

 

스프링이란?

스프링은 로드 존슨을 중심으로 개발된 Java/Java EE용 프레임워크이다. DIxAOP 컨테이너를 중심으로 MVC 프레임워크(스프링 MVC, 스프링 웹 플로), JDBC를 추상화한 프레임워크(스프링 JDBC), 기존 프레임워크와의 통합 기능 등을 개발자에게 제공하는 애플리케이션 아키텍처의 기반이 되는 것이다. 

 


스프링 MVC

프레젠테이션 층에서는 스프링 MVC와 스프렝 엡 플로를 이용할 수 있다. 이것은 웹 애플리케이션의 프레젠테이션 층에서 잘 사용하는 MVC 프레임워크에 해당한다. 스프링 MVC와 스프링 웹 플로를 이용하면 Ajax 등과의 연계도 가능하다.

 

 


스프링 시큐리티

정확하게는 프레젠테이션 층, 비즈니스 층, 데이터 액세스 층 전체에서 사용할 수 있지만, 프레젠테이션 층의 화면별 액세스 제어에 많이 사용하므로 여기서 설명한다.

스프링 시큐리티(Spring Security)는 인증/인가 기능을 제공하며, 베이직 인증이나 OAuth(데스크톱 PC 혹은 모바일 단말기 등에서 안전하고 공개적인 프로토콜)의 표준에 따라가는 인증 서비스(Facebook, Twitter, Google 등)를 사용할 수 있다.

 



비즈니스 로직 층

여기서는 스프링의 핵심이 되는 DIxAOP 컨테이너와 스프링 캐시를 알아본다. 비즈니스 로직 층을 설명하고 있지만, 정확하게는 둘 다 복수의 층(레이어)을 넘어서 이용할 수 있다.

 

 


스프링 DIxAOP 컨테이너

DIxAOP 컨테이너는 스프링을 특정짓는 기능이다.
DI는 오브젝트를 생성하고 오브젝트끼리의 관계를 생성해 소프트웨어의 부품화 및 설계를 가능하게 한다. DI를 이용하면 인터페이스 기반의 컴포넌트를 쉽게 구현할 수 있다.

DIxAOP 컨테이너에는 물론 AOP 기능도 있다. AOP를 이용하면 오브젝트 책임 외의 로직(사용자 인증이나 로깅, 트랜잭션 관리와 예외 처리 등)을 소스 코드에 명시적으로 기술하지 않고 나중에 추가할 수 있다. 소스 코드에는 할당된 책임 외의 처리가 필요 없어지고, 개발자는 비즈니스 로직에 집중할 수 있어서 코드가 한결 간결해지고 보기에도 쉬워질 것이다. 또한, AOP에 의해 책임 이외의 로직이 없어지면 DI를 이용한 컴포넌트화를 더 추진할 수 있고 단위 테스트나 팀 개발이 쉬워져 시스템 개발 비용을 크게 절감할 수 있다.

 

 


스프링 캐시

이용자 수가 늘어날 수록 퍼포먼스 문제가 발생할 수 있다. 퍼포먼스 문제는 대부분 RDB와의 처리에서 발생한다. 스프링 캐시는 이름처럼 데이터를 캐시해서 RDB와의 처리를 줄임으로써 퍼포먼스를 향상시키는 역할을 한다.

LIST