본문 바로가기
스프링부트 핵심가이드

[북스터디] 스프링 부트 핵심가이드 (ch1)

by ddahu 2023. 4. 20.

여러므로 바쁜... 4월이였던거 같다... 처음해보는 Spring 부터 Spring을 사용하여 만들어야하는 미니프로젝트,경조사,등등... 너무 바쁜 나머지 블로그와 코딩테스트 준비에 너무 소홀해졌었다.

다시 초심으로 알고리즘과 스프링을 공부를 시작 할려고 첫 스프링 부트 핵심가이드 북스터디 블로그를 작성하려 한다.

스프링 부트 핵심가이드 를 요약을 중점으로 작성 하려한다.!


chapter 1. 스프링 프레임 워크

 

스프링의 핵심 가치

애플리케이션 개발에 필요한 기반을 제공해서 개발자가 비즈니스 로직 구현에만 집중 할 수 있게끔 하는 것

 

 

제어역전(Ioc)


기본적으로 자바에서는 객체를 선언하고 해당 객체의 의존성을 생성한 후 객체에서 제공하는 기능을 사용한다. 하지만 제어 역전을 특징으로 하는 스프링에서는 스프링 환경에서 사용할 객체를 직접생성하지 않고 객체의 생명주기 관리를 '스프링 컨테이너', 'Ioc컨테이너' 에 위임 하여 제어권을 넘겨 제어 역전을 통해 의존성 주입 (DI; Dependency Injection), AOP 관점 지향 프로그래밍(Aspect-Oriented Programming) 등을 가능 하게 만든다.


의존성 주입(DI) 

 의존성 주입은 제어 역전의 방법 중 하나 다. 사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 주입 받아 사용하는 방식을 말한다.

 

스프링에서는 의존성을 주입 받는 방법은 3가지있다.

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

스프링에서는 어노테이션으로 @Autowired 통해 의존성을 주입 할 수 있지만 생략 할 수도 있다.


관점 지향 프로그래밍 (AOP)

AOP 는 스프링에서 아주 중요한 특징이다. 여태 OOP(객체지향 프로그래밍)에 익숙하여 AOP 와 OOP의 개념이 헷갈리는 부분이있었다.

 

OOP는( 추상화 , 캡슐화 , 상속 , 다형성) 의 기능을 재사용 가능한 개별 객체로 구성하여 프로그래밍 하는것이며

AOP는 관점을 기준으로 묶어 개발하는 방식이다

여기서 관점이란 ?     '핵심기능' , '부가기능' 으로 구분 해 각각을 하나의 관점으로 보는것을 의미한다.

ex) 클라이언트로부터 상품 정보 등록 요청을 받아 DB에 저장하고, 그 상품 정보를 조회하는 비즈니스 로직을 구현한다면 , 상품 정보를 DB에 저장, 저장된 상품정보를 보여주는 코드가 핵심기능이 된다.

 

https://doublesprogramming.tistory.com/115

오른쪽 그림은 OOP로직이며 흐름은 횡단으로 삽입이 된다.

왼쪽 그림은 AOP를 적용한 로직이며 AOP는 흐름이 종단으로 흘러간다.

AOP 관점에서 부가기능, 핵심기능이 어떤 기능인지에 무관하게 로직이 수행되기 전 또는 후에 수행되기만 하면된다.

여러 비즈니스 로직에서 반복 되는 부가 기능을 하나의 공통 로직으로 처리하도록 모듈화해 삽입 하는 방식을 AOP라고 하고

AOP를 구현하는 방법은 크게 3가지가 있다.

  1. 컴파일 과정에서 삽입하는과정
  2. 바이트코드를 메모리에 로드하는 과정에 삽입하는 방시
  3. Procxy 패턴을 이용한 방식

 

 


스프링 부트 핵심 가이드 의 chapter1을 학습하였고 정리를 해보았다..ㅎ