
우리는 지금까지 자바에 대해 공부하면서 Spring 프레임워크 기반으로 코드를 작성해왔다.
라이브러리를 이것저것 사용하면 되는데 뭐하러 굳이 프레임워크를 사용했을까?
이전에 작성한 게시글을 보면, 라이브러리는 개발자가 필요에 따라 선택해 사용하는 도구인 반면, 프레임워크는 정해진 구조와 흐름속에서 코드를 작성해야 한다는 제약이 있다. 이러한 점에서 프레임워크는 유연성이 떨어진다고 볼 수 있지만,
Spring 프레임워크는 이러한 단점을 상쇄하고도 남을 만큼의 많은 장점을 제공한다.
이제부터 천천히 알아보자.
Spring 은 자바 기반의 오픈소스 애플리케이션 프레임워크 이다. 자바로 프로그램을 만들 때 자주 쓰는 기능들을 미리 구현해놓고,
개발자가 그것을 편하게 사용할 수 있도록 틀을 제공하는 일종의 도구이다.
우리가 흔히 웹 사이트를 만들거나, REST API 를 구성할 때 필요한 요소들, 예를 들어 요청을 처리하는 컨트롤러, 데이터를 저장하는 데이터베이스 연동(JDBC, MYBATIS), 인증과 권한 같은 보안 기능 등이 Spring 안에 쉽게 구현할 수 있게 포함되어 있다.
Spring 이 처음 등장한 배경에는 당시의 자바 개발 환경이 너무 복잡하고 무거웠다는 문제가 있었다고 한다. 예전에는 Java EE 라는 기술을 사용해야 했는데, 이 방식은 설정 파일이 너무 많고 객체 간 의존 관계를 일일이 수동으로 관리해야 했다. 또한 테스트를 하기 어렵고, 재사용성이 떨어지는 문제가 있었다.
이러한 문제를 해결하기 위해 보다 유연하고 가벼우며, 테스트가 쉬운 구조를 제공하는 것이 바로 Spring 의 목표였다.
Spring 의 가장 핵심적인 개념은 DI(의존성 주입)와 loc(제어의 역전)이다. 이 개념을 통해 개발자는 객체를 직접 생성하고 관리하는 수고를 덜 수 있으며, 대신 프레임워크가 필요한 객체들을 자동으로 생성해 주입해주는 구조를 따른다. 덕분에 코드가 훨씬 깔끔해지고 테스트를 위한 객체 교체도 용이해진다. 이로 인해 ORM(Object- Realational Mapping)이란 객체와 DB 의 데이터를 매핑해주는 기술과 연결되어, 객체지향 프로그래밍에서 DB 연동을 훨씬 쉽게 만들어준다.
또한 Spring 은 Aop(관점 지향 프로그래밍)을 지원하여 로깅, 트랜잭션 처리, 보안 등과 같이 공통적으로 사용되는 기능들을 비즈니스 로직과 분리할 수 있게 도와준다. 이를 통해 코드의 가독성과 유지보수성이 크게 향상된다.
뿐만 아니라 Spring 은 기능이 매우 세분화 되어 있어 필요한 부분만 선택해서 사용할 수 있는 모듈화 구조를 가지고 있다. 예들 들어 웹 개발을 하기 위해 Spring MVC 를, DB 와 연동하려면 JDBC 혹은 JPA 를 사용할 수 있다. 보안이 필요하다면 Spring security 를 붙이면 되고, 이 모든 것을 손쉽게 구성할 수 있도록 도와주는 것 이 바로 Spring Boot 이다.

Spring Boot 는 복잡한 설정을 자동화해주고, 빠르게 개발을 시작할 수 있게 도와주는 도구로, 요즘에는 Spring 프레임워크를 사용한다 = Spring Boot 기반으로 개발한다 / 라고 생각하면 된다.
단순히 틀에 맞춰서 작성해야 한다는 이유로 프레임워크를 꺼릴수도 있겠지만, Spring 은 그 틀을 이용해 오히려 효율적인 개발과 높은 유지보수성, 확장성을 가능하게 한다는 점에서 너무나도 많은 장점을 가지고 있는 도구이다.

'Spring' 카테고리의 다른 글
| 프록시 패턴과 AOP에 대해 연관성 (0) | 2025.05.25 |
|---|---|
| [Java] Dependency Injection에 대해서, 그리고 왜 사용할까? (0) | 2025.05.21 |
| [Spring] ResponseEntity 와 RESTful API 설계에 대해 (0) | 2025.05.19 |
| [JPA] JPA 에 대해 (0) | 2025.05.13 |
| [Spring] Spring 프레임워크에서 자주 사용되는 인터페이스, 어노테이션 정리 (0) | 2025.05.13 |