Spring Framework 소개, 스프링 프레임워크 개요[스프링프레임워크3.2, 스프링실무교육강좌,스프링강좌]
Spring Framework는 Rod Johnson의 “Expert One-on-One J2EE Design and Devlopment” 에서 소개된 코드를 기초로 한 J2EE Application Framework이며 2005년 2월 28일에 Spring Framework 1.1.5가 릴리스 되었습니다.
마틴 파울러는 2004년의글에서 제어의 어떤 측면이 역행되는 것인지에 대한 의문을 제기하고 의존하는 객체를 역행적으로 취득하는 것이라는 결론을 내렸다. 그는 그와
같은 정의에 기초하여 제어 역행이라는 용어에 좀더 참신한 ‘의존성 주입(DI,dependency
injection)’이라는 이름을 지어줬다.
Spring이라는 Framework는 단어 그대로 유연한 특성을 가지는 프레임워크라 할 수 있는데 … J2EE용 프로젝트를 위해 설계된 Open Source project이며 내부적으로 구성된 layed Archtecture를 지원하여 J2EE 개발을 쉽게 해 주는 프레임워크 입니다. (Transaction, Persistence, Web User Interface 등의 기능과 컴포넌트를 결합하고 설정할 수 있게 함)
Spring을 이용하면 Middle Tire Object(Bean)에 대해 체계적인 관리가 가능하며 Singleton의 확산을 방지할 수 있으며 Application이 가능하다면 자체 API에 덜 의존하게 되며, Unit Test가 쉽고 일관성 있는 Data Access Framework을 제공하는 장점이 있습니다. 또한 MVC Model을 적용한 Web 어플리케이션 구축을 위한 독자적인 Class들이 준비되어 있어 Web 어플리케이션의 구축이 가능합니다.
JSP/JSTL, Tiles, Velocity, FreeMarker, Excel, XSL, PDF 등의 View 기술과 통합이 용이하며 Core에서 제공하는 IoC(Inversion of Control)가 테스트를 쉽게 해주는데 IoC란 실행 시점에서 의존성을 부가하는 방식으로 개발 시에는 의존성이 거의 없어 JUnit으로 대부분의 클래스를 테스트할 수 있습니다.
위에서 Spring Framework를 J2EE 어플리케이션을 쉽게 구현하게 해주는 Framework라고 했지만 엄밀하게 본다면 각종 Bean의 생성 및 관리를 하는 Lightweight Container로 볼 수있으며(이 부분에 대해서는 아래에 다시 살펴보도록 하겠습니다.) 그러므로 독립적으로 각종 어플리케이션을 만드는 것이 아니라 Struts나 Webwork, Tapestry등의 다른 Framework와 연계해 이용하는 것이 일반적 입니다. 당연히 Spring Framework는 J2EE의 기능에 의존하고 있는 것은 아니기 때문에 Stand Alone Application이나 Applet 같은 것에서도 이용이 가능 하구요~
EJB의 경우 기술하는 코드가 EJB에 의존해 버리며 EJB를 지원하지 않는 Container에서는 작성한 코드가 동작하지 않으며 기동하는데 걸리는 시간이 길다는 단점이 있어 이에 대해 Spring Framework에서는 IoC(Inversion of Control)를 채용하는 것으로 어플리케이션 코드의 Spring Framework API에의 의존도를 줄이며 Spring Framework가 관리하는 Bean에 대해서는 POJO(Plain Old Java Object)로서 직접 액세스 할 수가 있기 때문에 Bean을 사용하는데 생기는 overload 또한 없습니다. 나아가 Bean에 대해서 Transaction 처리 등을 추가하는 경우에도 AOP Interceptor를 통한 기능 추가가 가능합니다. 이와 같이 Spring Framework는 Bean의 관리에 수반하는 여러 처리를 가능한 가볍게 처리하므로 Lightweight Container로서 Spring을 접근해 볼 수도 있습니다.
Spring을 이용한다면 저 수준의 Java Beans 코드는 컨테이너 내부에 포함되며 beans 설정의 대부분은 Spring의 XML Configuration Service를 사용하면 됩니다. 이를 통해 각 Bean들의 클래스 이름, 필드, 초기값 등을 설정하여 이름을 통해 다른 Bean들을 참조할 수 있습니다. 또한 XML 파일을 이용하여 필드에 대한 초기값을 설정하는데 Java의 reflection 기능을 이용하여 객체를 생성하고 활성화 합니다.
기타사항에 대해서는 www.springframework.org에서 자료를 참고 해 보시기 바라며 다음 강좌부터 하나씩 베일을 벗겨 보도록 하죠^^
모든 어플리케이션은 비지니스 로직을 수행하기 위해 서로 협업하는 둘 또는 그 이상의 클래스들로 이뤄진다. 전통적으로 각 객체는 협업할 객체의 참조를 취득해야 하는 책임이 있다. 이것이 의존성이다. 이는 결합도가 높으며 테스트하기 어려운 코드를 만들어 낸다.
Spring이라는 Framework는 단어 그대로 유연한 특성을 가지는 프레임워크라 할 수 있는데 … J2EE용 프로젝트를 위해 설계된 Open Source project이며 내부적으로 구성된 layed Archtecture를 지원하여 J2EE 개발을 쉽게 해 주는 프레임워크 입니다. (Transaction, Persistence, Web User Interface 등의 기능과 컴포넌트를 결합하고 설정할 수 있게 함)
Spring을 이용하면 Middle Tire Object(Bean)에 대해 체계적인 관리가 가능하며 Singleton의 확산을 방지할 수 있으며 Application이 가능하다면 자체 API에 덜 의존하게 되며, Unit Test가 쉽고 일관성 있는 Data Access Framework을 제공하는 장점이 있습니다. 또한 MVC Model을 적용한 Web 어플리케이션 구축을 위한 독자적인 Class들이 준비되어 있어 Web 어플리케이션의 구축이 가능합니다.
JSP/JSTL, Tiles, Velocity, FreeMarker, Excel, XSL, PDF 등의 View 기술과 통합이 용이하며 Core에서 제공하는 IoC(Inversion of Control)가 테스트를 쉽게 해주는데 IoC란 실행 시점에서 의존성을 부가하는 방식으로 개발 시에는 의존성이 거의 없어 JUnit으로 대부분의 클래스를 테스트할 수 있습니다.
위에서 Spring Framework를 J2EE 어플리케이션을 쉽게 구현하게 해주는 Framework라고 했지만 엄밀하게 본다면 각종 Bean의 생성 및 관리를 하는 Lightweight Container로 볼 수있으며(이 부분에 대해서는 아래에 다시 살펴보도록 하겠습니다.) 그러므로 독립적으로 각종 어플리케이션을 만드는 것이 아니라 Struts나 Webwork, Tapestry등의 다른 Framework와 연계해 이용하는 것이 일반적 입니다. 당연히 Spring Framework는 J2EE의 기능에 의존하고 있는 것은 아니기 때문에 Stand Alone Application이나 Applet 같은 것에서도 이용이 가능 하구요~
EJB의 경우 기술하는 코드가 EJB에 의존해 버리며 EJB를 지원하지 않는 Container에서는 작성한 코드가 동작하지 않으며 기동하는데 걸리는 시간이 길다는 단점이 있어 이에 대해 Spring Framework에서는 IoC(Inversion of Control)를 채용하는 것으로 어플리케이션 코드의 Spring Framework API에의 의존도를 줄이며 Spring Framework가 관리하는 Bean에 대해서는 POJO(Plain Old Java Object)로서 직접 액세스 할 수가 있기 때문에 Bean을 사용하는데 생기는 overload 또한 없습니다. 나아가 Bean에 대해서 Transaction 처리 등을 추가하는 경우에도 AOP Interceptor를 통한 기능 추가가 가능합니다. 이와 같이 Spring Framework는 Bean의 관리에 수반하는 여러 처리를 가능한 가볍게 처리하므로 Lightweight Container로서 Spring을 접근해 볼 수도 있습니다.
Spring을 이용한다면 저 수준의 Java Beans 코드는 컨테이너 내부에 포함되며 beans 설정의 대부분은 Spring의 XML Configuration Service를 사용하면 됩니다. 이를 통해 각 Bean들의 클래스 이름, 필드, 초기값 등을 설정하여 이름을 통해 다른 Bean들을 참조할 수 있습니다. 또한 XML 파일을 이용하여 필드에 대한 초기값을 설정하는데 Java의 reflection 기능을 이용하여 객체를 생성하고 활성화 합니다.
기타사항에 대해서는 www.springframework.org에서 자료를 참고 해 보시기 바라며 다음 강좌부터 하나씩 베일을 벗겨 보도록 하죠^^
[출처] 오라클자바커뮤니티 -
http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecSpring&wr_id=1
>>>[개강안내]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급[www.onjprogramming.co.kr]
[평일저녁9/26]Spring3.X, MyBatis, Hibernate실무과정
[주말9/28] 웹퍼블리싱 마스터
[주말9/28]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
[주말9/28]SQL초보에서실전전문가까지
[주말9/28]C#,ASP.NET마스터
[평일저녁9/26]Spring3.X, MyBatis, Hibernate실무과정
[주말9/28] 웹퍼블리싱 마스터
[주말9/28]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
[주말9/28]SQL초보에서실전전문가까지
[주말9/28]C#,ASP.NET마스터
오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)
댓글 없음:
댓글 쓰기