[스프링 프레임워크] 프레임워크란?

hoonak·2023년 6월 29일
0

모델2 기반으로 애플리케이션을 개발할 경우 개발과 유지관리가 모델1 방식보다 쉬움. 하지만 새로운 애플리케이션을 개발할 때마다 일일이 처음부터 다시 개발해야 한다는 단점이 있음. 모든 웹 애플리케이션에서 필요한 공통 기능들을 각각 처음부터 다시 개발해야 한다는 것은 비효율적임.

이보다 더 좋은 방법은 애플리케이션 개발 시 일반적인 웹 애플리케이션에서 많이 사용하는 기능은 미리 만들어서 제공하고, 그 외에 필요한 부분만 추가 및 수정하는 것. 이렇게 하면 효율적일 뿐만 아니라 일정한 형식에 따라 개발을 진행하므로 표준화가 이뤄져 생산성도 높일 수 있음.

애플리케이션 규모가 커질수록 각 기능을 개발자가 따로 개발하는 것보다는 표준화된 방법으로 개발하는 것이 유리함. 따라서 지금은 대부분의 웹 애플리케이션을 스프링이나 스트러츠 같은 프레임워크 환경에서 개발함.

프레임워크란?

사전적 의미는 '어떤 것을 구성하는 구조 또는 뼈대'임. 소프트웨어적 의미로는 '기능을 미리 클래스나 인터페이스 등으로 만들어 제공하는 반제품' 정도로 해석할 수 있음. 즉 어느 정도 완성된 상태로 제공하는 기능인 셈.

우리는 현실에서 컴퓨터를 사용하다가 비디오 카드가 고장나면 어떻게 하나. 비디오 카드를 사서 교체하기만 하면 됨. 비디오 카드는 미리 만들어진 상태로 제공됨. 이처럼 프레임워크도 애플리케이션 개발 시 자주 사용하는 기능을 클래스나 인터페이스 등으로 미리 어느 정도 만들어서 제공하면 개발자가 자신의 상황에 맞게 변형 및 추가해서 이를 사용하는 것.

그러면 처음부터 개발할 필요 없이 자신이 원하는 애플리케이션을 짧은 시간에 만들 수 있음. 그리고 일정한 틀 속에서 개발을 하기 때문에 개발 후 유지보수 및 기능의 확장성에서도 고품질이 보장됨.

즉 프레임워크를 사용하는 이유를 한마디로 정리하면 일정한 기준에 따라 개발이 이뤄지므로 개발 생산성과 품질이 보장된 애플리케이션을 개발할 수 있기 때문.

스프링 프레임워크

프레임워크 중 현재 가장 많이 사용되는 것이 스프링 프레임워크(Spriing Framework)임. 스프링 프레임워크(이하 스프링)는 자바 웹 애플리케이션 개발을 위한 오픈 소스 프레임워크로, 기존 프레임워크보다 가벼운 경량 프레임워크임.

또한 스프링은 경량 컨테이너라고도 부름. '컨테이너'라고 하면 대표적인 것으로 톰캣을 들 수 있음. 톰캣은 서블릿 컨테이너라고 부르는데, 그 이유는 톰캣을 실행하면 톰캣은 서블릿의 생성, 초기화, 서비스 실행, 소멸에 관한 모든 권한을 가지고 서블릿을 관리하기 때문임.

스프링도 마찬가지임. 애플리케이션에서 사용되는 여러 가지 빈(클래스 객체)을 개발자가 아닌 스프링이 권한을 가지고 직접 관리함. 스프링 이전에 사용되던 프레임워크로 EJB(엔터프라이즈 자바빈즈)라는 것이 있는데, EJB는 실행 시 무거워 여러 가지 문제를 일으키는 단점이 있음. 스프링은 이런 EJB의 단점은 개선하고 좋은 점은 더 발전시켜서 탄생한 프레임워크임.

스프링 특징

  • EJB보다 가볍고 배우기도 쉬우며 경량 컨테이너의 기능을 수행함.
  • 제어 역행(IoC) 기술을 이용해 애플리케이션 간의 느슨한 결합을 제어함.
  • 의존성 주입(DI) 기능을 지원함.
  • 관점 지향(AOP) 기능을 이용해 자원 관리를 함.
  • 영속성과 관련된 다양한 서비스를 지원함.
  • 수많은 라이브러리와의 연동 기능을 지원함.

용어정리

  • 의존성 주입 : 클래스 객체를 개발자가 코드에서 생성하지 않고 프레임워크가 생성해 사용하는 방법임.
  • 제어 역행 : 서블릿이나 빈 등을 개발자가 코드에서 생성하지 않고 프레임워크가 직접 수행하는 방법임.
  • 관점 지향 : 핵심 기능 외 부수 기능들을 분리 구현함으로써 모듈성을 증가시기키는 방법임.

스프링에서 제공하는 주요 기능

  • Core : 다른 기능과 설정을 분리하기 위한 ioC 기능을 제공함.
  • Context : 스프링의 기본 기능으로서 애플리케이션의 각 기능을 하는 빈(Bean)에 대한 접근 방법을 제공함.
  • DAO : JDBC 기능을 좀 더 편리하게 사용할 수 있도록 함.
  • ORM : 하이버네이트나 마이바디스 같은 영속성 관련 프레임워크와 연동된 기능을 제공함.
  • AOP : 관점 지향 기능을 제공함.
  • Web : 웹 애플리케이션 개발에 필요한 기능을 제공함.
  • WebMVC: 스프링에서 mvc 구현에 관련된 기능을 제공함.

메이븐 같은 자동화 도구를 사용해 스프링 프레임워크 개발과 관련된 설정을 자동으로 할 수 있음.

profile
Hello World!

0개의 댓글