본문 바로가기
Spring boot/스프링 부트 3 백엔드 개발자 되기(자바편)

[2장] 스프링 부트 3 시작하기(1) - 스프링 콘셉트

by 리버🐦‍🔥 2023. 7. 25.

<핵심 키워드>

- IoC(제어의 역전)

- DI(의존성 주입)
- AOP(관점 지향 프로그래밍)

- PSA(이식 가능한 서비스 추상화)

 

2.1 스프링과 스프링부트

<스프링 vs 스프링부트> 차이점

  Spring Spring boot
설정 파일 구성 수동 구성 자동 구성
내장 WAS 유무 (서버) 내장 X 내장 O (톰캣, 제티, 언더토우)
목적 엔터프라이즈 애플리케이션 개발 스프링의 개발 효율 높이기
XML 일부 파일은 XML로 직접 생성하고 관리 사용하지 않음
인메모리 데이터베이스 지원 지원 X 자동 설정 지원 O

 

2.2 스프링 콘셉트

    2.2.1 제어의 역전(IoC)와 의존성 주입(DI)

    - 제어의 역전(IoC)

         -> Inversion of Control을 줄인 표현

         -> 객체를 직접 생성하는 것이 아닌, 다른 곳에서 생성된 객체를 가져와 사용

public class A {
	private B b;
}

▲ 스프링 컨테이너가 객체를 관리하는 예

 

    - 의존성 주입(DI)

        -> Dependency Injection을 줄인 표현

        -> 어떤 클래스가 다른 클래스에 의존한다는 뜻

        -> 스프링 컨테이너에서 객체를 주입받아 사용

public calss A {
	// A에서 B를 주입받음
    @Autowired
    B b;
}

▲ 객체를 주입받는 모습 예 (Spring 컨테이너가 B라는 객체를 대신 만들어준다.)

 

    2.2.2 빈과 스프링 컨테이너

    - 스프링 컨테이너란?

        -> 빈을 생성하고 관리하는 역할

        -> 빈의 생성주기를 스프링 컨테이너에서 관리

        -> @Autowire 같은 어노테이션을 사용해 받을 수 있도록 관리

 

    - 빈이란?

        -> 스프링 컨테이너가 생성하고 관리하는 객체 (스프링의 객체라고 생각하면 된다)

        -> 스프링이 빈을 등록하는 방법은 여러 방법이 있음 (ex. XML 파일 설정, @Component 등...)

        -> 빈의 이름은 클래스 이름의 첫 글자를 소문자로 바꿔 관리

@Component // 클래스 MyBean을 빈으로 등록
public calss MyBean {
}

▲ 클래스를 빈으로 등록하는 방법 예시

 

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

    - 프로그래밍에 대한 관심을 [핵심관점/부가 관점]으로 나눠서 관심 기준을 모듈화하는 것을 의미

    - 장점 : 핵심 관점 코드에만 집중할 수 있게 되고, 프로그램의 변경 및 확장에도 유연하게 대응 가능

 

    2.2.4 이식 가능한 서비스 추상화(PSA - Portable Service Abstraction)

    - 스프링에서 제공하는 다양한 기술들을 추상화해 개발자가 쉽게 사용하는 인터페이스

    - 어떤 기술을 사용하던 일관된 방식(기존 코드)을 그대로 사용 가능하게 하는 방식

 

 

<스프링 핵심 4가지 - 한 줄 요약>
- IoC : 객체의 생성과 관리를 개발자가 하는 것이 아니라 프레임워크가 대신하는 것
- DI : 외부에서 객체를 주입받아 사용하는 것
- AOP : 프로그래밍을 할 때 핵심 관점과 부가 관점을 나누어서 개발하는 것
- PSA : 어느 기술을 사용하던 일관된 방식으로 처리하도록 하는 것