Web Programming/Spring

Spring 프레임워크 기본구조

myHyem 2019. 6. 22. 09:05

학교에서 공부할 때와는 다르게 개발자가 되니 프레임워크를 사용하게 되었습니다.

요 근래 사용해본 프레임워크는 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

 

[Spring 레퍼런스] 1장 스프링 프레임워크 소개 #1 :: Outsider's Dev Story

오랫동안 자바와 스프링에 대해서 공부해야지 하면서도 사실 다른 기술들에 비해서 많은 시간은 투자하지 못했습니다. 어쨌든 작년부터는 스프링으로 업무를 하고 있기 때문에 올해는 맘먹고 스프링을 공부하기로...

blog.outsider.ne.kr

https://ooz.co.kr/170

 

스프링(Spring) 프레임워크 기본 개념 강좌 (1) - 스프링 이해하기

JAVA개발자를 위한 스프링 기본 개념 이해를 돕기 위한 강좌를 진행할 예정입니다. 스프링을 처음 접하시거나 개념에 대해 이해가 좀 더 필요하신 분들을 위해 작성한 것으로 스프링을 이미 잘 다루시거나 전문적..

ooz.co.kr

https://m.blog.naver.com/weekamp/186678831

 

POJO(Plain Old Java Object) 란?

Java진영에서 어느날 갑자기 등장하여 개발자들을 모호하게 만들어 버렸던 POJO!! 이 녀석이 당췌 뭐...

blog.naver.com

https://mo-world.tistory.com/entry/IOC%EC%99%80-DI-%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC-%EC%8A%A4%ED%94%84%EB%A7%81-%EA%B0%9C%EB%85%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85

 

IOC와 DI 에 대하여 (스프링 개념 이해하기 쉽게 설명)

Inversion of Control (제어의 역전) DI(의존성 주입)을 이해하기 위해서는 IoC(제어의 역전) 의 개념을 알고 넘어가야 할 필요가 있다. 스프링을 쓰기 전에는 개발자가 프로그램의 흐름(애플리케이션 코드)을 제..

mo-world.tistory.com

 

'Web Programming > Spring' 카테고리의 다른 글

Model 1 , Model 2, MVC  (0) 2019.11.27
의존성 관리  (0) 2019.07.06
<bean> 엘리먼트 속성  (0) 2019.07.06