본문 바로가기
Web Develop/Book Study

[Book Study] 스프링 부트 핵심 가이드 - 1. 스프링 부트란?

by tripleup 2023. 8. 22.
728x90
반응형

[Book Study] 스프링 부트 핵심 가이드
1. 스프링 부트란?


1 - 1 스프링 프레임워크

제어 역전 (IoC : Inversion of Control)

  • 사용할 객체를 직접 생성하지 않고 객체의 생명 주기를 스프링 컨테이너 또는 IoC 컨테이너에 위임
  • 제어 역전 : 객체의 관리를 컨테이너에 맡겨 제어권이 넘어간 것 
  • 제어 역전을 통해 의존성 주입(DI: Dependency Injection), 관점 지향 프로그래밍(AOP: Aspect-Oriented Programming) 등이 가능

▶ 의존성 주입 (DI : Dependency Injection)

  • 사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식
  • 의존성을 주입받는 방법 세 가지
    • 생성자를 통한 의존성 주입
    • 필드 객체 선언을 통한 의존성 주입
    • setter 메서드를 통한 의존성 주입
  • 스프링에서는 @Aurowired라는 어노테이션(annotation)을 통해 의존성 주입

 

// 1.생성자를 통한 의존성 주입

@RestController
public class DiController {

	Myservice mySerice;
    
    @Autowired
    public DIController(Myservice myService) {
    	this.myService = myService;
    }
    
    @GetMappring("/di/hello")
    public String getHello() {
    	return myService.getHello();
    }
    
}

 

// 2.필드 객체 선언을 통한 의존성 주입

@RestController
public class FieldInjectionController {

	@Autowired
    private MyService myService;
    
}

 

//3. setter 메서드를 통한 의존성 주입

@RestController
public class SetterInjectionController {

	MyService myService;
    
    @Autowired
    public void setMyService(MyService myService) {
    	this.myService = myService;
    }
}

 

  • 스프링 공식 문서에서 권장하는 의존성 주입 방법 : 생성자를 통한 의존성을 주입받는 방식.
    • 생성자를 통해 의존성을 주입받는 방식은 레퍼런스 객체 없이는 객체를 초기화할 수 없게 설계할 수 있기 때문

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

  • 관점을 기준으로 묶어 개발하는 방식
  • 여러 비즈니스 로직에서 반복되는 부가 기능을 하나의 공통 로직으로 처리하도록 모듈화해 삽입하는 방식
  • AOP를 구현하는 방법
    • 1. 컴파일 과정에서 삽입하는 방식
    • 2. 바이트코드를 메모리에 로드하는 과정에 삽입하는 방식
    • 3. 프락시 패턴을 이용한 방식
  • 스프링 AOP의 목적 : 모듈화해서 재사용 가능한 구성을 만드는 것

▶ 스프링 프레임워크의 다양한 모듈


1 - 2 스프링 프레임워크 vs. 스프링 부트

▶ 의존성 관리

  • 스프링 프레임워크에서는 모듈 의존성을 직접 설정
  • 스프링 부트에서는 "spring-boot-starter"라는 의존성을 제공

▶ 자동 설정

  • 추가된 라이브러리를 실행하는 데 필요한 환경 설정을 알아서 찾음
  • 즉, 애플리케이션을 개발하는 데 필요한 의존성을 추가하면 프레임워크가 이를 자동으로 관리

▶ 내장 WAS

  • "spring-boot-starter-web"에 톰캣이 내장

▶ 모니터링

  • 스프링 부트 액추에이터(Spring Boot Actuator)라는 자체 모니터링 도구

728x90
반응형

댓글