스프링 Concept

leejk1072·2024년 1월 17일

SpringBoot

목록 보기
3/4
post-thumbnail

1. 제어의 역전과 의존성 주입

📍IoC (Inversion of Control) 란?

  • 제어의 역전(IoC)은 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것
  • 실제로 스프링은 스프링 컨테이너가 객체를 관리, 제공하는 역할을 한다.

📍DI (Dependency Injection) 란?

  • 스프링에서는 객체들을 관리하기 위해 제어의 역전을 사용한다. 그리고 이 제어의 역전을 구현하기 위해 사용하는 방법이 의존성 주입 (DI) 이다!
// 객체를 주입받는 모습 예

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

@Autowired 라는 애너테이션은 스프링 컨테이너에 있는 빈이라는 것을 주입하는 역할을 한다. 빈은 쉽게 말해 스프링 컨테이너에서 관리하는 객체!


2. 빈과 스프링 컨테이너

📍스프링 컨테이너 란?

  • 스프링 ~> 스프링 컨테이너 제공
  • 스프링 컨테이너 ~> 빈을 생성하고 관리한다

빈이 생성되고 소멸되기까지의 생명주기를 스프링 컨테이너에서 관리한다


📍빈 이란?

  • 스프링 컨테이너가 생성하고 관리하는 객체
  • 스프링 ~> 빈을 스프링 컨테이너에 등록하기 위해 XML 파일 설정, 애너테이션 추가 등의 방법 제공 (= 빈을 등록하는 방법은 여러 가지임)

예를 들어 MyBean이라는 클래스에 @Component 애너테이션을 붙이면 MyBean 클래스가 빈에 등록된다. 이후 스프링 컨테이너에서 이 클래스를 관리한다. 이때 빈의 이름은 클래스 이름의 첫글자를 소문자로 바꿔 관리한다. 즉, MyBean 클래스의 빈 이름은 myBean이다.

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

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

3. 관점 지향 프로그래밍

📍AOP (Aspect Oriented Programming)

  • 관점 지향 프로그래밍
  • 프로그래밍을 "핵심 관점", "부가 관점"으로 나누어서 관심 기준으로 모듈화하는 것
    • 예를 들어, 계좌 이체 프로그램에서 핵심 관점은 계좌 이체, 부가 관점은 DB 연결이나 로깅 등등

AOP 통해 핵심 관점 코드에만 집중, 프로그램의 변경과 확장에도 유연하게 대응 가능하다

4. 이식 가능한 서비스 추상화

📍PSA (Portable Service Abstraction)

  • 이식 가능한 서비스 추상화
  • 스프링에서 제공하는 다양한 기술들을 추상화하여 개발자가 쉽게 사용하는 인터페이스
  • 환경의 변화와 관계 없이 일관된 방식의 기술로의 접근 환경을 제공하는 추상화 구조

0개의 댓글