웹개발/Spring

스프링 프레임 워크(Spring Frame Work)

slown 2023. 7. 22. 23:57

목차

  • Spring Frame Work?
  • Spring의 특징
    • 의존성 주입(Di)
    • 관점 지향 프로그램(AOP)
    • 제어의 역전(Loc)
    • 추상화 서비스(PSA)
  • Spring MVC 흐름

 

Spring Frame Work

Spring Frame Work는 자바 기반의 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션입니다. 엔터프라이즈급 개발이란 뜻대로만 풀이하면 기업을 대상으로 하는 개발이라는 말입니다. 즉, 대규모 데이터 처리와 트랜잭션이 동시에 여러 사용자로 부터 행해지는 매우 큰 규모의 환경을 엔터프라이즈 환경이라 일컫습니다. 우리나라에서는  공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부프레임워크의 기반 기술로 쓰이고 있습니다.

 

Spring Frame Work의 특징

의존성 주입(Dependency Injection)

의존성 주입이란 객체가 서로 의존하는 관계가 되게 의존성을 주입하는 것입니다. 객체지향 프로그램에서 의존성 이란 하나의 객체가 어떠한 다른 객체를 사용하고 있음을 말합니다. 또한 다른 객체를 사용함으로써 코드 재사용을 높여 소스코드를 다양한 곳에 사용할 수 있으며 모듈간의 결합도도 낮출 수 있습니다.

관점지향프로그래밍(AOP: Aspect Oriented Programming)

AOP는 핵심기능과 공통기능을 분리시켜 핵심 로직에 영향을 끼치지 않게 공통기능을 끼워 넣는 개발 형태 이며 이렇게 개발방법을 말합니다. 이 방법을 통해서 중복된 코드를 제거를 함으로써 효율적인 유지보수가 가능하며 재사용이 가능하게 됩니다.

제어의 역전(LOC: Inversion of Control)

제어의 역전은 일반적으로는 프로그램에서 개발자가 직접 객체의 생명주기를 다루었지만 제어의 주체가 툴(스프링)으로 바뀌면서 객체를 관리해주는 것을 말한다. 스프링에서는 xml파일 또는 어노테이션 방식으로 IoC 컨테이너에 있는ApplicationContext와 BeanFactory 인터페이스 덕분에 Bean으로 지정한 모든 클래스를 인스턴스로 등록해주어 다른 클래스에서 의존관계가 필요하다면 이 Bean으로 등록된 인스턴스들을 전달해주어 의존성 주입(Dependency Injection)이 가능해집니다.

추상화 서비스(PSA:Portable Service Abstraction)

외부 라이브러리들을 POJO로 사용할 수 있도록 일종의 껍데기를 씌워 추상화한 것으로, 스프링에서 추상화된 서비스들을 자바 언어로 자유롭게 사용할 수 있게 된다. 편의성을 제공해주고 완전히 다른 기술 스택으로도 애플리케이션이 작동할 수 있도록 해주어 코드를 바꿀 일이 줄어들게됩니다.

 

 

 

참고 블로그

https://velog.io/@meme2367/%EC%8A%A4%ED%94%84%EB%A7%81-

Spring MVC 흐름

Spring Mvc 작동원리

스프링의 작동원리는 다음과 같다.

  1. 클라이언트에서 요청(URL)이 들어오면 DispatcherServlet이 요청을 받는다.
  2. DispatcherServletHandlerMapping에게 요청된 URL을 보낸다.
  3. HandlerMapping은 해당 요청을 매핑한 Controller가 있는지 검색을 한다. 있다면  호출해야 하는 Controller의 메소드(Handler) 정보를 DispatcherServlet에게 리턴한다.
  4. DispatcherServlet은 Handler메서드를 직접 호출하지 않고 HandlerAdapter에게 Handler메소드 호출 책임을 넘깁니다.
  5. HandlerAdapterController의 Handler메소드를 호출을 합니다.
  6. Controller에서는 Handler메소드를 실행하고 비지니스 로직(Service, Repository)를 처리합니다.
  7. 처리후 리턴받은 Model데이터를 HandlerApdater에 넘겨줍니다.
  8. HandlerAdapter넘겨받은 Model데이터랑 view에 있는 이름을 DispatcherServlet에 전달을 합니다.
  9. DispatcherServlet은 view에 있는 이름을 가지고 ViewResolver에게 해당 view를 달라고 요청합니다.
  10. ViewResolver는 해당 View를 찾은 뒤 DispatcherServlet에게 반환합니다.
  11. DispatcherServlet은 ViewResolver에게 받은 View 객체에게 Model 데이터를 넘겨주면서 클라이언트에게 전달할 응답 데이터 생성을 요청합니다.
  12. View는 응답 데이터를 생성해서 다시 DispatcherServlet에게 반환합니다.
  13. DitpatcherServlet은 View로부터 받은 응답데이터를 마지막으로 클라이언트에게 응답합니다.

※ DispatcherServlet ?

DispatcherServlet 은 클라이언트 요청을 처리하고 알맞은 컨트롤러에 요청을 전달하는 프론트 컨트롤러(Front Controller) 역할을 합니다.

 

※ HandlerMapping ?

들어온 요청 URL을 기반으로 어떤 컨트롤러(핸들러)가 이 요청을 처리할지 결정하는 역할을 하는 인터페이스입니다.

 

※ HandlerAdapter ?

 디스패처 서블릿(DispatcherServlet)이 요청을 처리할 때, 컨트롤러(핸들러)를 호출하는 역할을 하는 중요한 인터페이스입니다.

 

참고 블로그

%ED%8A%B8%EB%9D%BC%EC%9D%B4%EC%95%B5%EA%B8%80Spring-Triangle-IoC-AOP-PSA#3-%EC%B6%94%EC%83%81%ED%99%94-%EC%84%9C%EB%B9%84%EC%8A%A4psa-portable-service-abstraction

 

스프링 트라이앵글(Spring Triangle) - IoC, AOP, PSA

이 글은 토비의 스프링과 인프런 예제로 배우는 스프링 입문, 스프링 프레임워크 핵심기술을 보고 정리한 글입니다.라이브러리와 다르게 모든 프레임워크에는 IoC 개념이 적용되어있다. 이 IoC라

velog.io

https://anywaydevlog.tistory.com/61

 

Spring Framework란? Spring 의 특징과 핵심 개념

Spring Framework 란? JAVA 기반의 기업용 애플리케이션 개발을 위한 오픈 소스 애플리케이션 프레임워크이다. 기업용 애플리케이션 개발을 내세우는 만큼, 대규모 데이터 처리와 여러 사용자의 트랜

anywaydevlog.tistory.com

https://khj93.tistory.com/entry/Spring-Spring-Framework%EB%9E%80-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-%ED%95%B5%EC%8B%AC-%EC%A0%95%EB%A6%AC