Spring Framework란 무엇인가?
in Programming on Spring
Spring Framework
Spring은 객체관리를 해주는 빈 컨테이너 프레임워크다.
컨테이너 프레임워크? 무엇을 의미하는지 무척 모호하지만
말 그대로, 많은 양의 화물을 관리하는 컨테이너를 생각해보면 이해가 쉽다.
화물선에 많은 양의 화물을 실을 때 화물 개별로 관리를 하려면 무척 힘들기때문에 화물을 싣거나 꺼낼때 컨테이너를 이용한다. 화물선은 컨테이너만 관리하면 되고 컨테이너 내부의 물건은 컨테이너에서 꺼낼때 관리하면 된다.
아무리 많은 물건이 있어도 개별적으로 물건을 관리하지 않고 컨테이너 자체를 관리하면 화물선은 물건을 안전히 싣고 이동할 수 있다.
이처럼 웹프로젝트에서도 화물선(서버)가 항해하는동안 여러 일을 개별적으로 처리하기가 힘들기때문에 화물(Java Bean)들을 관리해줄 컨테이너가 필요하게되었다.
처음에는 EJB(Enterprise Java Bean)가 컨테이너 역할을 해주었는데 점점 학습하기 어려워질정도로 복잡해지자 더 경량화되고 간소화된 컨테이너가 필요하게되었다.
이에 POJO(Plain Old Java Object)를 사용하는 경량화된 컨테이너인 Spring Framework가 만들어지게 되고 큰 인기를 끌게 된다.
Spring Framework의 특징
IoC와 AOP를 지원하는 경량의 컨테이너 프레임워크
1. 경량
Spring은 매우 가볍다. jar파일로 구성된 여러 모듈로 구성되어있고 이 몇개의 jar파일만 있으면 개발, 실행이 모두 가능하다. 또한 애초에 가벼운 OJO형태 객체를 관리하여 EJB 객체 관리하는 프레임워크보다 가볍다.
2. 제어의 역행(IoC)
객체 생성을 java code로 직접처리하는게 아니라 컨테이너가 대신 처리한다. 소스에 의존관계가 명시되지 않아 결합도가 떨어져 유지보수가 편리해진다.
(원래 개발자가 직접 javacode로 처리했던 객체의 생성과 의존관계를 컨테이너가 대신 처리해서 제어의 역행(IoC)이라고 하는듯.)
3. 관점지향프로그래밍(Aspect Oriented Programming, AOP)
메소드마다 반복등장하는 공통로직을 분리해 응집도가 높게 개발할 수 있도록 한다.