학교에서 공부할 때와는 다르게 개발자가 되니 프레임워크를 사용하게 되었습니다.
요 근래 사용해본 프레임워크는 eGov(Spring) , 코드이그나이터 였습니다.
그중에 Spring 프레임워크에 대한 숙련도를 높이고자 책에서 배운 것을 이곳에 정리하며 배우려고 합니다.
FrameWork
'아키텍처(≒하드웨어)에 해당하는 골격 코드'
라고 이해하고 있습니다.
개발자들에게 기본적인 골격을 제공하고 개발자들은 기본골격에 살을 붙이는 식으로 개발을 하여,
개발자들의 해당 애플리케이션에 대한 분석, 설계, 구현에 대한 이해도가
'상향평준화'
시키는데 그 목적이 있다고 생각합니다.
(간단하게는 누구나 유지보수하기 쉽게 최대한 통일하자 라고 생각합니다)
Spring FrameWork
JAVA 플랫폼 경량화 프레임워크의 일종입니다.
특징
-
경량
크기 측면에서의 경량 + POJO ( = Java Bean, 순수하게 setter/getter 메서드로 이루어진 Value Object성의 Bean ) 객체 사용에 따른 경량. ( 그냥 프레임워크 중에 가볍다 정도로 인식하고 넘어가도 될 것 같습니다 )
-
IoC ( 제어의 역행 )
보통 프로그램은 하나의 흐름을 가지고 있고 이를 '개발자가 제어/주도'하게 되어있습니다.
이 제어권을 컨테이너에게 넘기고 ( = 제어권의 흐름이 바뀜, 제어의 역행/역전 ) 이로 인해서 의존성 주입( DI ), 관점 지향 프로그래밍( AOP ) 등이 가능하게 됩니다.
-
DI ( 의존성 주입 )
(꼭 스프링에서만 사용되는 개념은 아니지만, 알고 넘어가야 할 것 같아서 함께 정리합니다.)
객체 간의 의존성을 해당 코드 내에서 설정하는 것이 아닌 '외부에서 주입하여 설정/연결' 한다는 개념입니다.
-
AOP ( 관점 지향 프로그래밍 )
메서드를 개발할 때, '핵심 로직'과 '공통 사용 로직'을 분리하여 개발하는 프로그래밍 기법(?)이라고 할 수 있습니다.
-
컨테이너
개발자 대신 주입을 이용하여 객체를 관리하 ( 객체의 생성 및 소멸 = 생명주기 )는 주체를 가리킵니다. ( IoC, Servlet, EJB 등 )
-
스프링 컨테이너의 종류
BeanFactory : 스프링 설정 파일 ( xml ) 에 등록된 <bean> 객체를 생성하고 관리하는 기본적인 컨테이너 기능만 제공.
컨테이너가 구동될 때 <bean> 객체를 생성하는 것이 아니라, 클라이언트의 요청에 의해서만 객체가 생성되는
'지연 로딩 ( Lazy Loading ) 방식을 사용.
ApplicationContext : BeanFactory 를 상속하므로 위에서 섷명한 <bean> 객체 관리 기능 외에도 다양한 기능을 지원한다.
컨테이너가 구동되는 시점에 <bean> 등록된 클래스들을 객체 생성하는 즉시 로딩 ( pre-loading )
방식을 사용한다. (웹 애플리케이션 개발도 지원)
이러한 특징들로 인해서 Spring FrameWork는
'느슨한 결합도와 응집도가 높은 프로그래밍'
을 가능하게 해 줍니다.
우선 이정도로 정리해두고 차차 추가하도록 하겠습니다.
출처 : 스프링 퀵 스타트 (채규태 지음)
https://blog.outsider.ne.kr/729
https://m.blog.naver.com/weekamp/186678831
'Web Programming > Spring' 카테고리의 다른 글
Model 1 , Model 2, MVC (0) | 2019.11.27 |
---|---|
의존성 관리 (0) | 2019.07.06 |
<bean> 엘리먼트 속성 (0) | 2019.07.06 |