본문 바로가기
☕Java/Spring

[20210630] 스프링 프레임워크

by 캔 2021. 6. 30.

스프링 프레임워크(Spring Framework)는 엔터프라이즈 서비스 개발 시 사용하던 EJB에 반발하여 만든 경량 오픈 소스 자바 프레임워크이다. 간단히 '스프링'이라고도 한다. 무거운 EJB 객체와 달리 스프링 프레임워크는 가볍고 간단한 POJO(Plain Old Java Object) 객체를 사용한다.

스프링의 3대 요소에는 DI, IoC, AOP가 있다.

IoC(Inversion of Conrol)

일반 자바 프로젝트에서는 객체 안에서 다른 객체를 생성하여 사용하지만, 스프링 프레임워크에서는 스프링 컨테이너(혹은 IoC 컨테이너라고도 한다.)가 객체를 생성하고 제어한다. 참조하는 모듈이 참조당하는 모듈을 제어하는 것이 아니라 참조당하는 모듈과 참조하는 모듈 모두 스프링 컨테이너가 제어하고 이를 제어의 역전, IoC라고 한다. 이를 통해 스프링 프레임워크는 모듈 간의 느슨한 결합(loosely coupled)을 도모한다.

DI(Dependency Injection)

스프링 컨테이너는 객체를 생성할 뿐만 아니라 객체의 생성자(constructor)나 세터(setter)를 통해 다른 모듈을 주입하기도 한다. 이를 의존성 주입이라고 한다. 스프링을 사용하지 않을 때는 코드 내에서 의존 관계가 결정되므로 코드를 컴파일하여 실행 중일 때는 모듈 간의 의존 관계를 수정할 수 없다. 만약 이때 의존 관계 수정이 필요하다면 프로그램을 종료한 후 새로운 코드를 컴파일하여 실행하여야 한다.(웹 프로그램이라면 서버를 종료하고 다시 실행해야 한다는 말이다.) 하지만 스프링을 사용하면 의존 관계는 컴파일 이후에 의존 관계를 담고 있는 명세서(xml 파일)에 따라 결정되므로 프로그램 실행 중에도 xml 파일을 변경하여 의존 관계를 수정하는 것이 가능하다.

AOP(Aspect-Oriented Programming)

AOP는 관점 지향 프로그래밍이라고도 하며, 로그인이나 트랜잭션 등 비즈니스 로직을 횡단(cross-cutting, 시간을 세로축으로 하였을 때 단계를 잘라내기 위해 가로로 절단한다고 생각하자.)하여 분리하며 필요시에만 호출하여 사용한다. DB 접속이나 종료와 같이 반복되는 작업을 다른 작업에서 하나의 모듈로 만들어 내는 것이다.


한마디로 스프링 프레임워크는 모듈 간의 응집도는 높이고 결합도는 낮춰 프로그래밍을 쉽게 해주는 도구이다.

'☕Java > Spring' 카테고리의 다른 글

[20210707] Spring Web MVC  (0) 2021.07.07
[20210706] Spring Framework의 AOP  (0) 2021.07.06
[20210705] MyBatis  (0) 2021.07.05
[20210702] Spring JDBC 예제  (0) 2021.07.02
[20210701] 스프링 프로젝트 생성하기  (0) 2021.07.01