본문 바로가기

spring

Spring framework 란?

Framework 란?

특정한 목적에 맞게 프로그래밍을 쉽게 하기 위한 약속. 모든 프레임워크는 어떤 언어를 기반으로, 어떠한 목적을 갖고 만들어졌다.

가장 헷갈려 하는 게 라이브러리 인데, 라이브러리는 우리가 직접 클래스를 new로 생성해서 사용하는 것이라고 보면 되고, 프레임워크는 내가 만든걸 framework가 사용해주는 것을 말한다. 이런 걸 제어의 역전(Inversion of Control), 뒤집혀진 라이브러리라고 한다.


Spring framework 란?


Spring은 견고한 Java 어플리케이션 개발을 위한 포괄적인 하부구조를 제공하는 open source framework이다. Spring Framework는 본질적으로 애플리케이션을 구축 할 수있는 탄탄한 토대를 제공하는 골격입니다. 이 스켈레톤 구조는 개발자가 애플리케이션 개발 프로세스 전반에 걸쳐 개발자를 안내하고 도움을줍니다. Struts 및 Hibernate와 같은 단일 계층 프레임 워크와는 달리 Spring은 모든 단일 계층 프레임 워크를 최대한 활용하여 일관되고 생산적인 방식으로 응용 프로그램을 통합하는 것을 목표로 합니다.


스프링 프레임워크는 어떤 플랫폼에서도 종합적인 프로그래밍과 자바 기반의 현대 엔터프라이즈 어플리케이션의 Configuration Model을 제공합니다. 스프링의 핵심요소는 어플리케이션 단위의 인프라를 제공한다는 것입니다. 스프링은 기업용 어플리케이션의 plumbing에 초점을 맞추고 있습니다. 그래서 개발팀은 특정 배포 환경에서 불필요한 시도없이 어플리케이션의 비지니스 로직에 초점을 맞출 수 있습니다.


한 문장으로 말하자면, 자바언어를 기반으로 다양한 어플리케이션을 제작하기 위한 약속된 프로그래밍 툴 입니다.


등장배경을 간략히 말하자면, EJB(엔터프라이즈 자바빈즈(Enterprise JavaBeans; EJB)는 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다. 즉, EJB는 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다. EJB 사양은 Java EE의 자바 API 중 하나로, 주로 웹 시스템에서 JSP는 화면 로직을 처리하고, EJB는 업무 로직을 처리하는 역할을 한다.)가 전에 개발자들이 사용하던 서버 애플리케이션이었는데 고가의 장비(WAS 등등)이 필요했고, 개발환경 설정 그리고 테스트 환경에 많은 애로사항이 있어서 훨씬 가볍게 애플리케이션을 개발할 수 있는 프레임워크인 Spring이 등장했다고 합니다. EJB에 비해 톰캣 컨테이너를 사용하고, 코드의 경량화 그리고 개발 중 테스트가 쉽다는 장점이 있습니다.


EJB에서 선언적 트랜잭션(자동적으로 예외처리, 커밋을 해주는 것이라고 생각하면 된다.), 분산 컴포넌트(Enterprise Component)라는 좋은 특징을 갖고 있었지만, 위에서 말한 것과 같이 어렵고 무겁고 테스트도 안되고 그랬는데, Spring에서 EJB의 좋은 특징을 갖고 단점을 줄여서 개발자들의 봄이 왔다고 해서 이름도 Spring이라고 지었다고 합니다. 


Spring은 인스턴스(객체)의 생명주기를 관리합니다. 우리가 new로 객체를 생성하는 것이 아니라 스프링이 동적으로 생성해주고 없애줍니다. 


Spring framework를 처음 이해하기 전에 XML(Extensive MarkUp Language)를 알아야합니다.

xml은 확장가능한 마크업 언어로서 tag의 이름이 정해져있지 않습니다. 그리고 최소 한개의 요소(Element)를 가지고 있어야 합니다. 여기서 요소는 시작 tag를 말합니다.


위키백과의 설명을 덧붙이자면 "XML(Extensible Markup Language)은 W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어이다. XML은 SGML의 단순화된 부분집합으로, 다른 많은 종류의 데이터를 기술하는 데 사용할 수 있다. XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어졌다." 다고 합니다.


Spring은 하나가 아닙니다. 여러가지 모듈이 있고, 모듈마다 개발한 사람들이 다릅니다. 그래서 모듈마다 xml 스키마가 다릅니다. 이 스키마들을 모아놓은 xml 문서가 있는데 그 문서 내에서 각 모듈의 스키마를 구분해주는 것이 namespace 입니다.



'spring' 카테고리의 다른 글

TDD와 단위 테스트의 차이  (0) 2020.05.05