[JAVA] 스프링 프레임워크(Spring Framework)와 특징

[JAVA] 스프링 프레임워크(Spring Framework)와 특징

[JAVA] 스프링 프레임워크(Spring Framework)와 특징

프레임워크란?

스프링 프레임워크에 대해 알아보기전에, 먼저 프레임워크에 대해 알아보면, 우리가 예를들어 자동차를 만든다고 하였을때, 자동차의 모든 부품을 처음부터 끝까지 하나하나 손수 만드는 것보다 자동차 관련 회사에서 부품 하나하나를 이미 만들어두고 차체에 이 부품들을 가져다가  조립하는 것이 더 효율적일 것 입니다. 이와 같은 맥락으로,우리가 웹 개발을 함에 있어서 프레임워크란, 코딩의 목적 달성을 하기 위해 필요한 코드의 뼈대를 미리 만들어둔 것을 말합니다(라이브러리들을 가져다 쓰는거죠)

스프링 프레임워크란?

그렇다면 스프링 프레임워크(Spring Framework)란 무엇일까요?
스프링은   Java(Kotlin:코틀린은 자바와 100% 호환되며 스프링 프레임워크 5 버전부터 공식적으로 코틀린을 지원)로 개발함에 있어 매우 유용하게 사용할 수 있는 “가벼운” 프레임워크입니다. 우리가 프로그램 개발하는데 무거운 프레임워크를 사용한다면.. 생각만해도 벌써 답답한데요, 스프링은 동적인 웹 사이트를 개발하기 위한 다양한 서비스(라이브러리)를 제공하며 대한민국 공공기관의 웹 서비스 개발에 널리 사용되고 있습니다.
스프링은 엔터프라이즈급 애플리케이션을 개발하기 위한 다양한 기능을 제공하는 “가벼운” 솔루션 이라 할 수 있습니다. 소규모가 아닌 대규모 데이터 처리와 트랜잭션을 다루는 환경에서도 효율적으로 사용 가능합니다. 또한, 아래에서 알아보겠지만, 스프링은 객체를 관리하는 경량 컨테이너로서 객체의 생성, 소멸의 라이프 사이클을 관리하며 제어의 반전(IoC)과 의존성 주입(DI)을 지원합니다.

스프링의 주요 특징

경량 컨테이너 – 객체의 생성 및 관리를 스프링에 위임하여 라이프 사이클을 관리하고 필요한 객체를 사용할 수 있습니다.
POJO(Plain Old Java Object) 기반 – 복잡한 인터페이스 구현이나 상속을 필요로하지 않는 단순한 자바 오브젝트를 사용하여 개발이 용이하고 무엇보다 “가볍습니다”
제어의 반전(IoC-Inversion of Control) – 객체 컨트롤을 프레임워크가 동적으로 필요에 따라 호출합니다.
의존성 주입(DI – Dependency Injection) – IOC를 통해 객체 간 의존성을 외부에서 주입하여 모듈 간 결합도를 줄이고 유지보수성을 높입니다.
관점 지향 프로그래밍(AOP) – 프로그램을 만들면서, 소스코드상 자주 반복되는 코드들(공통 기능)을 모듈화하여 관리합니다.
다양한 영속성 지원 – 데이터베이스 처리를 위한 라이브러리와 연결할 수 있는 인터페이스를 제공합니다.(예로 JDBC드라이버로  Oracle, MySQL .. 각 DB를 지원)
확장성 – 다양한 라이브러리를 쉽게 통합하거나 분리하여 사용할 수 있습니다.

스프링의 구조

Spring Core – Bean Factory Container를 포함한 Spring Container입니다(IOC를 지원하여 객체 생성과 의존성 처리를 담당)
Spring Context – Spring 설정 정보를 제공하는 컨텍스트입니다(JNDI, EJB, Validation 등의 기능을 포함)
Spring AOP – 관점 지향 프로그래밍을 위한 모듈로, AOP를 적용하고 관리할 수 있게 도와줍니다.
Spring DAO – 데이터 액세스 객체로서 Database 자료에 접근하는 역할을 합니다.
Spring ORM – 객체와 관계형 데이터베이스 간의 매핑을 지원하는 모듈입니다. Ibatis, Hibernate 등을 지원합니다.
Spring Web – 웹 개발에 필요한 기능을 지원하는 모듈입니다(Application과 Web context를 관리)
Spring MVC – Model-View-Controller 패턴을 구현하여 웹 응용 프로그램을 개발하는데 도움을 줍니다.

결론

스프링 프레임워크는 자바 기반의 오픈 소스 프레임워크로서 다양한 기능(모듈)을 제공하여 엔터프라이즈급 애플리케이션을 개발하는 데 매우 유용하며 개발자에게 큰 도움을 줍니다. 스프링의 경량 컨테이너, 제어의 반전, 의존성 주입, 관점 지향 프로그래밍 등의 특징은 개발하는 것 뿐만 아니라 유지보수를 효율적으로 할 수 있게 해주며, 스프링의 모듈화된 구조는 확장성과 재사용성을 높여줍니다. 스프링을 프레임워크를 다양한 모듈을 잘 활용하고 웹 애플리케이션을 개발할 때 더욱 효율적이고 유연한 개발을 하도록 합시다!

이전 글 – 자바(Java)의 역사를 알아보자, 2023

이전 글 – 프로그래밍 언어(기계어, 어셈블리어, 고급 언어, 그리고 다양한 언어 종류)

이전 글 – 소프트웨어(S/W) 개발과정 5단계를 알아보자(요구사항 분석부터 유지보수까지)

Leave a Comment