초기의 기업들은 JAVA의 표준 기술로 EJB(Enterprise Java Bean)을 사용했다. EJB는 트랜잭션, 분산기술, Entity Bean(ORM)등의 기술을 지원하여 많은 기업들이 사용했다. 하지만 EJB는 비싸고, 어렵고, 복잡하고, 느린 단점이 있었기 때문에 단점이 너무 심하다고 느끼게 되어 초기의 순수자바(POJO)를 사용하자는 이야기 까지 나오게 됬다.
2002년 Rod Johnson은 EJB의 문제점을 지적한 책을 출간했다.
버전 | 공개일 | 주요 특징 |
---|---|---|
1.x | 2004.03. ~ | DlxAOP 컨테이너의 시작, Bean 정의 파일 시대의 개막 1.1 ~ 1.2에 거쳐 Bean 정의 파일의 간략화 |
2.x | 2006.10. ~ | Bean 정의 파일이 DTD에서 XML 스키마 형식으로 변경(독자 스키마 사용 가능) 어노테이션의 등장 JPA와 스크립트 언어 지원과 다기능화에 돌입 2.5에서 JAVA 1.4와 JUnit 4 지원, 어노테이션 강화 |
3.x | 2009.12. ~ | 어노테이션은 거듭 강화됬지만, 여전히 SI를 중심으로 Bean 정의 파일이 선호됨 클라우드 시대에 대응, Spring 캐시 기능 등장 JAVA 7 대응(JAVA 1.5 이상, JUnit 4.7), Hibernate 4, Servlet 3 |
4.x | 2014.04. ~ | JAVA 8 지원, JAVA 6이상 웹 컴포넌트(Web Component)의 강화(RestController, WebSocet 등) Spring Boot의 등장 |
5.x | 2017.09. ~ | JAVA 9 대응 리엑티브 프로그래밍(WebFlux) 제공 |
프레임워크는 뼈대나 기반구조를 뜻하고, 제어의 역전 개념이 적용된 대표적인 기술이다.
소프트웨어에서의 프레임워크는 '소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합' 이라 할 수 있으며, 완성된 애플리케이션이 아닌 프로그래머가 완성시키는 작업을 해야한다.
객체 지향 개발을 하게 되면서 통합성, 일관성의 부족이 발생되는 문제를 해결할 방법중 하나라고 할 수 있다.
라이브러리는 단순 활용 가능한 도구들의 집합을 말한다.
즉, 개발자가 만든 클래스에서 호출하여 사용, 클래스들의 나열로 필요한 클래스를 불러서 사용하는 방식을 취하고 있다.
여기서 프레임워크와 라이브러리의 차이점은 이렇게 볼 수 있다.
프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 짜 넣는다. 반면에 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것이라고 할 수 있다.
다시 말해, 라이브러리는 라이브러리를 가져다가 사용하고 호출하는 측에 전적으로 주도성이 있으며 프레임워크는 그 틀안에 이미 제어 흐름에 대한 주도성이 내재(내포)하고 있습니다.
Spring 프레임워크는 대략적으로 6가지의 특성이 있는데 이를 살펴보겠다.
Spring Container을 의미한다. core라는 말 그대로 Container는 Spring Framework의 핵심이며 그중 핵심은 Bean Factory Container이다. 그 이유는 바로 Bean Factory는 IoC패턴을 적용하여 객체 구성 부터 의존성 처리까지 모든 일을 처리하는 역할을 하고 있기 때문이다.
Spring context는 Spring Framework의 context 정보들을 제공하는 설정 파일이다. Spring Context에는 JNDI, EJB, Validation, Scheduiling, Internaliztaion 등 엔터프라이즈 서비스들을 포함하고 있다.
이 부분은 위에서 설명했기 때문에 넘어가도록 하겠다.
DAO란 Data Access Object의 약자로 Database Data에 접근하는 객체이다. Spring JDBC DAO는 추상 레이어를 지원함으로써 코딩이나 예외처리 하는 부분을 간편화 시켜 일관된 방법으로 코드를 작성할 수 있게 도와준다.
ORM이란 Object Relational Mapping의 약자로 간단하게 객체와의 관계 설정을 하는 것이다. Spring에서는 Ibatis, Hibernate, JDO, MyBatis 등 인기있는 객체 관계형 도구를 사용 할 수 있도록 지원한다.
Spirng에서 Web context module은 Application module에 내장되어 있고 Web기반의 응용프로그램에 대한 Context를 제공하여 일반적인 Web Application 개발에 필요한 기본적인 기능을 지원한다. 그로인해 Jakarta Structs 와의 통합을 지원하고 있다.
Spring에서는 MVC에서는 Model2 구조로 Apllication을 만들 수 있도록 지원한다. MVC (Model-View-Controller) 프레임 워크는 웹 응용 프로그램을 작성하기위한 완전한 기능을 갖춘 MVC를 구현한다. MVC 프레임 워크는 전략 인터페이스를 통해 고급 구성 가능하며 JSP, Velocity, Tiles, iText 및 POI를 포함한 수많은 뷰 기술을 지원하고 있다.
여기까지 Spring에 대한 개념 정리를 하고 마무리하고자 한다.
https://en.wikipedia.org/wiki/Rod_Johnson_(programmer)
▲Rod Johnson
https://webclub.tistory.com/458
▲프레임워크
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=youngchanmmm&logNo=220676023621
▲Spring 프레임워크 구조
Thanks for sharing that...
UnitedHealthcare Login