본문 바로가기

Web Programming/SPRING

[SPRING] 1. SPRING FRAMEWORK

여러분들은 프로그래밍 개발을 할 때 코드의 반복을 어떻게 줄이고 계신가요?
객체화, 주입 등등 다양한 방법이 있을텐데요. 코드의 반복을 어떻게 하면 줄일 수 있을지 생각하게 되면서 생겨난것이 framework와 library 입니다. 그럼 그들의 특징을 자세하게 알아보겠습니다.

이번 PPT 에서는 SPRING FRAMEWORK를 공부하기 이전에 Framework와 Library의 차이점을 알아보고 SPRING Framework의 특징에 대해서 알아보겠습니다.

Library란 무엇일까요? Library는 일회성이 아닌 비휘발성 자원들의 모음입니다. 프로그램의 호출에 의해 제어되고 정해진 대로 사용됩니다. 개발자는 Library를 호출해서 사용하며 원본의 Library를 재정의하여 사용하는것도 가능합니다.

그렇다면 Framework는 무엇일까요? 우리가 Servlet 코드를 만들고나서 그것이 실제 실행되는 곳은 tomcat서버입니다. tomcat은 해당 Servlet에 URL 요청이 들어왔을 때 사용되는 것입니다. Servlet 코드를 살펴보면 main 메소드가 없는것을 확인할 수 있습니다 이것은 실행하는 주최가 tomcat이라는 것입니다. 

나중에 가면 service와 dao도 우리가 만들지 않고 누군가에 의해서 관리가 될 것입니다. 프로그램의 흐름이 개발자가 실행하는 것이 아니라 framework를 실행하는 것입니다. 우리가 만든 것은 프레임 워크에 의해서 제어가 된다는 것입니다.

이것을 바로  IOC(Inversion of Control) 제어의 역전  이라고합니다.

이 내용을 바탕으로 Library와 Framework의 가장 큰 차이점은 제어권이 누구에게 있는가를 알 수 있습니다.

그렇다면 Framework를 사용하는 이유는 무엇일까요? Framework를 사용하게되면 시스템의 기능 외에 필요한 비기능 요소들을 제공받을 수 있습니다. 시스템 구축시마다 반복적으로 비기능 요소를 구현할 필요가 없어지게 됩니다. 예를 들어 DB connection 관리나 transaction 제어를 반복적으로 구현 할 필요가 없습니다.

비기능적 요소를 구현하지 않게되면 비지니스 로직 구현에 집중 할 수 있게됩니다. 구현과 유지보수가 편해진다는 것을 뜻하지만 이로인해 개발자들의 역량이 획일화 되는 경우가 발생하게 됩니다.

SPRING에 대해서 알아보겠습니다. SPIRNG은 JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용합니다. JAVA로 다양한 어플리케이션을 만들기 위한 프로그래밍 틀이라 할 수 있습니다.

예전과 비교하면 지금은 JAVA의 활용도가 높아졌고 따라서 프로젝트의 규모도 커졌습니다. JAVA를 이용한 기술은 JSP, MyBatis, JPA 등 여러가지가 있는데 즉, 이 기술들이 프로젝트에 많이 쓰인다고 할 수 있습니다. SPRING은 이 기술들을 더 편하게 사용하기 위해 만들어진 것입니다.

프로젝트를 진행하다 보면 아무리 분업을 해도 분명 중복되는 코드가 발생합니다. SPRING은 이런 중복코드의 사용률을 줄여주고, 비즈니스 로직을 더 간단하게 해줄 수 있습니다.

SPRING을 사용하면 다른 사람의 코드를 참조하여 쓰기 편리한데 이말의 의미는 오픈소스를 좀더 효율적으로 가져다 쓰기 좋은 구조라는 것입니다. 

결론적으로 SPRING이란 JAVA 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임 워크 입니다.

SPRING을 기반으로한 다양한 서브프로젝트입니다.

제가 생각하는 SPRING Framework의 가장 큰 특징은 request나 servlet은 서버에 의존하기 때문에 프로그래밍 개발시 어려움이 따르게 됩니다. 하지만 Spring은 테스트콛를 구현하여 향상된 형태의 테스트를 지원한다는 것입니다.

Spring 이전의 모습을 간략하게 PPT로 기술하였습니다.