Spring

[Spring] 스프링 프레임워크

whitedeveloper 2022. 12. 24. 01:12

 

 

-자바에서 가장 많이 사용하는 프레임워크

-자바 기반의 애플리케이션 프레임워크로 *엔터프라이즈급 애플리케이션을 개발하기 위한 다양한 기능 제공

-현재 우리나라 전자정부 표준 프레임워크로 공공기관 웹 서비스 개발 때 사용

 

*앤터프라이즈급 개발

-기업환경을 대상으로 하는 개발을 뜻함

-네이버, 카카오톡 같은 대규모 데이터를 처리하는 환경

 

#.스프링의 특징과 구조

 

$.제어역전(Loc)

- 객체의 관리를 컨테이너에 맡겨 제어권이 넘어간 것

- 이를 통해 의존성 주입(DI : Dependency Injection), 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)등 가능

 

-일반적인 자바에서는 객체를 사용하기 위해 객체를 선언하고 해당 객체의 의존성을 생성한 후 객체에서 제공하는 기능을 사

-즉. 객체를 생성하고 사용하는 일련의 과정을 개발자가 직접 제어

일반적인 자바 코드 객체 사용법

-제어 역전(Loc : Inversion of Control)은 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 *외부에 위임

  *외부 - 스프링 컨테이너 or Loc 컨테이너

 >개발자가 *비즈니스 로직을 작성하는데 집중하게 해

  *비즈니스 로직 - 프로그램의 핵심, 데이터가 어떻게 생성, 저장되는지 작성한 코드

 

 

 

$.의존성 주입(DI)

-제어의 역전의 방법 중 하나

-외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식

-주입 받는 방법 : 3가지

 > 생성자를 통한 주입 -> 공식문서 권장: 레퍼런스 객체 없이는 객체를 초기화할 수 없기 때  

 > 필드 객체 선언을 통한 주입

 > setter 메서드를 통한 의존성 주입

 > @Autowired 라는 어노테이션

 

생성자를 통한 의존성 주입
필드 객체 선언을 통한 의존성 주입
setter 메서드를 통한 의존성 주입

 

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

-*관점을 기준으로 묶어 개발하는 방식

  *관점(Aspect)- 어떤 기능을 구현할 때  *핵심 기능과 *부가 기능을 구분해 각각 하나의 관점으로 보는 것을 의미

  *핵심 기능 - 비즈니스 로직을 구성하는 과정이서 비즈니스 로직이 처리하려는 목적 기능

     ex) 상품정보 DB에 저장, 저장된 상품정보를 보여주는 코드

  *부가 기능 - 비즈니스 로직 사이에 로깅 처리, 트랜잭션 처리하는 코드

 

-AOP관점에서는 어떤 기능인지에 무관하게 로직이 수행되기 전 또는 후에 수행되기만 하면 되기 때문에

-반복되는 기능을 공통 로직으로 처리하도록 모듈화해 삽입하는 방식

 

-구현 방법 : 3가지

 > 컴파일 과정에 사입

 > 바이트코드를 메로리에 로드하는 과정에 삽입

 > 프록시 패턴을 이용한 방식 -> 스프링에서는 이것을 사용

 

 

 

스프링은 개존 개발 방식의 문제와 한계를 극복하기 위해 다양한 기능을 제공하나 설정이 복잡하다.

이를 해결하기 위해 나온 것이 스프링 부트(spring boot)