스프링 콘셉트

devyunie·2024년 8월 25일

SpringBoot

목록 보기
2/13
post-thumbnail

제어의역전 (IoC), 의존성 주입(DI), 관점지향 프로그래밍(AOP),이식가능한 서비스 추상화(PAS)에 대한 설명

제어의 역전과 의존성 주입

IoC: Inversion of Control (제어의 역전)

  • JAVA
    1. 일반적인 자바 개발에서 객체를 사용하기 위해 객체를 선언 하고 해당 객체의 의존성을 생성한 후 객체에서 제공하는 기능을 사용
    2. 객체를 생성하고 사용하는 일련의 작업을 개발자가 직접 제어 하는 구조
    3. new 키워드로 NomalService 객체 생성
private NomalService nomalService = new NomalSerVice();
  • Spring
    1. 개발자가 직접 객체를 생성하지 않고 객체의 생명 주기 관리를 외부로 위임
    2. 외부 -> Spring Container , IoC Container 부름
    3. 객체의 관리를 컨테이너에 맡겨 제어권을 넘어간 것을 제어의 역전이라고 함
    4. new 라는 키워드 사용없이 어디선가 받아온 객체를 b에 할당
private NomalService nomalService;

-> 스프링은 스프링 컨테이너가 객체를 관리, 제공하는 역할을 한다.

IoC를 통한 DI, AOP

개발자는 객체의 제어권을 컨테이너로 넘기고 객체의 생명 주기 관리 등의 복잡한 요소들을 신경 쓰지 않고, 비즈니스 로직에만 집중할 수 있게 된다.

DI : Dependency Injection (의존성 주입)

  • 제어의 역전을 구현하기 위해 사용하는 방법
  • 어떤 클래스가 다른 클래스에 의존한다

스프링 컨테이너

  • 빈을 생성하고 관리
  • 빈이 생성되고 소멸되기까지의 생명주기를 스프링 컨테이너가 관리

@Autowired

  • 스프링 컨테이너에 있는 빈이라는 것을 주입하는 역할

BEAN(빈)

  • 스프링 컨테이너가 생성하고 관리하는 객체

@Component

  • 클래스를 해당 클래스명 으로 빈으로 등록

@Service

  • @Component랑 동일한 역할을 한다 서비스 영역에서 명시성을 부여

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

  • 프로그래밍에 대한 관심을 핵심 관점, 부가관점으로 나누어서 관심 기준으로 모듈화
  • 프로그램의 변경과 확장에도 유연하게 대응 가능

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

  • 스프링에서 제공하는 다양한 기술들을 추상화해 개발자가 쉽게 사용하는 인터페이스
  • 어느 기술을 사용하던 일관된 방식으로 처리하는 것
  • ex) 스프링에서 데이터베이스에 접근하는 기술
    - JPA, Mybatis, JDBC

0개의 댓글