본문 바로가기
Spring&SpringBoot/<토비의 스프링 3.1 Vol1.1>, 이일민

스프링을 공부한다는 것은

by 민휘 2023. 3. 2.

스프링이란 무엇인가?

스프링은 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크다. 애플리케이션 개발을 빠르고 효율적으로 할 수 있도록 애플리케이션의 바탕이 되는 틀과 공통 프로그래밍 모델, 기술 API를 제공한다.

 

스프링을 사용한다는 것은 스프링 컨테이너, 공통 프로그래밍 모델, 다양한 기술 API를 활용해 애플리케이션을 개발한다는 뜻이다. 클래스는 스프링 컨테이너 위에서 오브젝트로 만들어져 동작하고, 코드는 스프링의 프로그래밍 모델인 IoC/DI, 서비스 추상화, AOP에 따라 작성하고, 엔터프라이즈 기술을 사용할 때 스프링이 제공하는 기술 API와 서비스를 사용하는 것이다.

 

스프링의 핵심 설계 철학은 단순함과 유연성이다. 스프링은 객체지향 언어의 장점을 개발자들이 누릴 수 있도록 도와주는 도구이다. 스프링이 강력히 주장하는 것은 가장 단순한 객체지향적인 개발 모델인 POJO 프로그래밍이다. 스프링은 유연성과 확장성이 매우 뛰어나서 서드파티 프레임워크의 지원을 많이 받는다. 스프링 기능의 대부분은 핵심 기능을 확장해서 발전시킨 결과물이다.

 

스프링은 어떻게 공부해야하는가?

스프링은 배우기 쉬운 기술이 아니다. 스프링이 지지하는 프로그래밍 모델, 개발과 설계 원리나 개념 또는 관련 기술, 자바와 엔터프라이즈 개발의 다양한 영역을 배우게 된다. 관련 지식 중에 부족한 부분이 있다고 생각되면 그 부분을 체계적으로 살펴본 뒤 다시 스프링으로 돌아오는 것이 좋다. 실제로 나는 토비의 스프링에 두번째 도전하고 있다. 첫번째는 패턴의 고비를 넘지 못했다. 지금은 객체지향과 디자인패턴을 익히고 다시 도전하는 중이다.

 

  1. 스프링의 핵심 가치와 원리를 이해해야 한다. 핵심 가치와 그것이 가능하도록 도와주는 세 가지 핵심 기술, 스프링이 강조하는 중요한 프로그래밍 모델을 익히고 스프링을 일관된 방식으로 이해할 수 있는 눈을 가져야 한다.
  2. 스프링이 어떻게 다양한 방법으로 확장하고 적용했는지 살펴본다. 스프링은 어느 분야와 기술 환경에도 적용 가능하도록 기술 영역별로 폭넓은 접근 방법을 제공한다. 다양한 선택의 문제를 각 기술 영역별로 효과적으로 다루는 방법을 배운다.
  3. 스프링의 다양한 기술을 어떻게 실제 애플리케이션 개발에 적용하는지 공부한다. 스프링을 효과적으로 사용하는 개발팀은 스프링을 기반으로 프레임워크를 만들어 사용한다.

 

스프링을 공부하고 적용했지만 사용법에 조금 익숙해진 것을 빼면 더 나아진게 없다고 느꼈다. 난 아마 스프링을 잘못 공부한 것 같다. 그래서 다시 공부한다. 내 코드가 더 깔끔하고 단순하면서 객체지향 원칙에 충실하고, 더 많은 테스트 코드를 작성하고, 유연하고 확장이 손쉬운 애플리케이션이 만들어졌으면 한다.