티스토리 뷰
목차

1.Spring에 대한 이해
Spring Framework는 자바 기반의 웹 애플리케이션 개발을 위한 프레임워크이다. 스프링은 객체 지향 개발을 매우 용이하게 할 수 있도록 도와주기 때문에 자바에 대해 충분한 이해가 먼저 선행되어야 한다. 애플리케이션을 빠르고 효율적으로 개발할 수 있도록 기본 틀과 공통 프로그래밍 모델, API 등을 제공한다.
2.Spring의 목적
2-1 기술의 복잡함
엔터프라이즈 시스템이란, 서버에서 동작하며 기업과 조직의 업무를 처리해주는 시스템을 말한다. 엔터프라이즈 시스템은 많은 사용자의 요청을 동시에 처리해야하기 때문에 서버의 자원을 효율적으로 공유하고 분배해서 사용할 수 있어야한다. 또한 기업이 핵심 정보를 다루기 때문에 보안과 확장성, 안정성면에서도 뛰어나야한다. 즉, 엔터프라이즈 시스템을 개발하는데는 순수한 비지니스 로직을 구현하는 것 외에도 기술적으로 고려할 사항이 많다는 뜻이다.
2-2 비즈지스 로직의 복잡함
예전에는 회계처럼 복잡한 계산이 필요한 영역에서만 IT시스템을 활용했었다. 하지만 갈수록 대부분의 업무처리를 컴퓨터를 이용해서 한다. 즉 복잡한 기업 업무의 대부분을 엔터프라이즈 애플리케이션이 담당하게 된것이다.
또한 기업 업무 프로세스를 수시로 변경되기 때문에 시스템 개발과 유지보수, 주가 개발 등의 작업 부담이 커지고 그에 따른 개발 난이도는 더욱 증가하였다
3.Spring의 특징
스프링 프레임워크는 다음과 같은 주요 특징을 가지고 있다.
경량 컨테이너, 의존성 주입, 관점 지향 프로그래밍(AOP), 트랜잭션 관리, MVC 웹 프레임워크 등이다.
먼저 경량 컨테이너는 스프링 컨테이너 또는 애플리케이션 컨텍스트라고 불리는 런타임 엔진을 제공한다. 스프링 컨테이너는 설정 정보를 참고하여 애플리케이션을 구성하는 오브젝트(빈)을 생성하고 관리한다. 그리고 의존성을 갖는 객체에 대해 의존성 주입(Dependency Injection, DI)를 통해 두 객체의 결합도를 낮추도록 도와준다.
AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)는 애플리케이션에 공통적으로 나타나는 부가적인 기능들을 독립적으로 모듈화하는 프로그래밍 모델이다. 애플리케이션의 요구 사항이 점점 복잡해져가고, 기술적인 난해함이 더해지면 모든 책임과 관심사를 분리하는 것이 상당히 어렵다. 그래서 스프링은 AOP를 지원하여 다양한 엔터프라이즈 서비스를 적용하고도 책임을 분리하여 깔끔한 코드를 유지할 수 있고, 객체지향스럽게 개발할 수 있도록 도와준다.
예를 들어 비즈니스 로직과 트랜잭션 관리를 위한 로직이 결합된다면 로직이 중복되고, 여러 책임을 갖는 등의 단점이 존재하게 된다. Spring에서는 AOP를 적용하여 @Transactional이라는 선언적 트랜잭션 기능을 구현하여 큰 장점을 누릴 수 있도록 도와준다.

또한, 스프링 MVC는 모델-뷰-컨트롤러 아키텍처를 기반으로 한 웹 애플리케이션 개발을 위한 강력한 프레임워크를 제공한다. 스프링 MVC는 개발자가 웹 애플리케이션의 각 구성 요소를 쉽게 개발하고 관리할 수 있도록 지원하기 때문이다.
이는 웹 애플리케이션의 개발 속도와 품질을 크게 향상시킨다.
이러한 특징들은 애플리케이션의 개발과 유지보수를 보다 효율적으로 만들어준다. 특히, 스프링의 의존성 주입과 관점 지향 프로그래밍은 코드의 결합도를 낮추고, 재사용성과 확장성을 높여주고 이 모든 것들이 스프링 프레임워크를 자바 엔터프라이즈 애플리케이션 개발의 선호도 높은 선택지로 만들어준다고 생각한다.
너무 깊게 들어가지 아니하고 개략적으로 학습하고 정리했다. 내용중에 잘못된 부분이 있을 수도 있으니 혹여 보셨다면 기탄없이 지적해주시면 감사하겠다:)
'IT > Spring' 카테고리의 다른 글
| 🔄 Spring의 @Transactional 완전 정복 - 개념, 원리, 동작 방식, 트러블 슈팅까지 (0) | 2025.06.11 |
|---|---|
| Spring AOP 완전 정복 - 핵심 로직과 횡단 관심사의 완전 분리 (0) | 2025.06.05 |
| Spring의 DI 방식 완전 정복 - 생성자 / 필드 / 세터 주입, 그리고 언제 어떻게 써야 하는가? (0) | 2025.05.13 |
| Spring Bean과 생명주기 - Bean의 생성부터 소멸까지, 내부에서는 어떤 일이 벌어질까? (0) | 2025.05.12 |
| Spring Framework의 핵심 원리 - IoC, DI, AOP (0) | 2025.05.11 |