스프링/독서록

스프링의 의미와 시작

개발 초보 2023. 6. 7. 22:22

오늘부터 정독을 시작한 "스프링 부트로 개발하는 MSA 컴포넌트 - 김병부"라는 책을 토대로 배운 것과 느낀 것을 기록해 나갈 것이다. 

 

오늘의 기록은 "스프링의 의미와 시작"이다.

 

스프링(Spring)?

스프링의 등장은 개발하기 복잡하고 어려운 기존의 EJB(Enterprise Java Beans)를 대체하기 위해 만들어진 프레임워크로, 힘든 개발을 했던 겨울이 가고 개발하기 좋은 봄(Spring)이 왔다는 의미이다.

 

스프링과 EJB의 차이점

위에서  스프링은 EJB를 대체하기 위해 만들어졌다 했는데, 그 차이점은 무엇일까?

 

▶우선 EJB는 객체지향적이지 않고, 프로그래밍 모델 또한 복잡하다. 프로그래밍의 난이도는 개발자의 생산성에 크게 기여된다. 하여 사용법이 어려운 프레임워크일 수록 사장될 수 밖에 없는 것이다.

▶반면 스프링  프레임워크는 관점지향적으로 공통 모듈을 분리시켜 중복 코드를 제거하고, 유지보수도 쉬워지며 재활용성도 높아진다. 그리고 스프링 프레임워크는 사용법 또한 EJB에 비해 월등히 쉬워졌다.

 

▶EJB는 프레임워크 코드와 개발자가 작성한 코드의 결합이 높다(의존성이 높다). 그 이유는 EJB를 사용하기 위해서 특정 패키지에 포함된 인터페이스를 클래스에 구현하거나 상속받아 메서드를 오버라이드 해야한다. 이 과정에서 프레임워크의 메서드가 사용자 클래스에 구현되는데, 이를 프레임워크 코드가 침투된다고 한다.

▶하지만 스프링은 프레임워크 코드와 개발자의 코드가 결합도가 낮다. 그 이유는 POJO(Plain Old Java Object) 객체를 기반으로 하기 때문이다. 개발자는 POJO 클래스를 개발하고, 스프링 컨테이너는 이 POJO 객체의 생성, 의존성 주입, 객체 소멸까지 생명주기를 관리한다. 여기서 POJO 객체는 특정 기술에 종속되지 않는 순수 자바 객체를 의미한다.

 

스프링의 핵심 요소 

스프링 프레임워크의 핵심 요소는 다음과 같다.

 

■ 의존성 주입

■ 관점 지향 프로그래밍

■ 서비스 추상화

 

위 세 가지 요소는 책에서도 중요하다고 나와있지만 조금 뒤에 세세히 다뤄줄 것 같다. 

 

오늘 읽은 바로는 스프링의 대략적인 장점과 핵심 기술들의 대략적인 기능을 알 수 있었다. 앞으로 책의 내용이 완전한 내 지식이 될 때까지 독서와 기록을 이어갈 것이다.