Spring Framework 특징

김예인·2023년 5월 31일

백엔드 공부일지

목록 보기
33/43

Spring 삼각형


POJO(Plain Old Java Object)

Java로 생성하는 순수한 객체

  • Java나 Java의 스펙(사양)에 정의된 것 이외에는 다른 기술이나 규약에 얽매이지 않아야 한다.
  • 특정 환경에 종속적이지 않아야 한다.

왜??

  • 종속적이지 않아야 재사용이 가능하고, 확장이 유연한 코드
  • 저수준 레벨의 기술과 환경에 종속적인 코드를 애플리케이션 코드에서 제거함으로써 코드가 깔끔
  • 깔끔한 코드덕에 디버깅도 상대적으로 쉬움
  • 종속적이지 않아 테스트도 단순
  • 객체지향적인 설계를 제한 없이 적용 가능 (가장 중요한 이유)

롬복 등의 외부 라이브러리를 사용하면 POJO 원칙을 위배한다고 볼 수 있나요?

POJO 를 유지한다고 말할 수 있다!


IoC(Inversion of Control)

애플리케이션 흐름의 주도권이 뒤바뀐 것,
Spring에서는 애플리케이션 흐름의 주도권이 뒤바뀌어 Spring 이 갖는다


DI (Dependency Injection) : 의존성 주입

1. DI 가 뭐야?

여기서 말하는 의존성은 "객체간의 의존성"
"의존성 주입" = 외부에서 객체를 주입한다.

💻 예시
A 클래스가 B 클래스의 메서드를 사용하기 위해,

  • B의 객체를 new 키워드로 직접 생성 (X)
  • A의 생성자로 B의 객체를 전달받기 (O)

즉, 클래스의 생성자 파라미터로 객체를 전달받는 코드가 있다면 '의존성 주입' 이 이루어지는구나!

2. DI 왜해?

3. DI 어떻게해?

4. DI 누가해?


AOP (Aspect Oriented Programming)

관심 지향 프로그래밍

애플리케이션에 전반에 걸쳐 적용되는 공통 기능(트랜잭션, 로깅, 보안, 트레이싱, 모니터링) 등을 비즈니스 로직에서 깔끔하게 분리하여 재사용 가능한 모듈로 사용하는 것

  • 핵심 관심 사항(Core concern) : 비즈니스 로직 즉, 애플리케이션의 주목적 달성을 위한 핵심 로직
  • 공통 관심 사항(Cross-cutting concern): 애플리케이션 전반에 공통적으로 적용되는 부가적인 것

장점

  • 공통 코드를 분리하여 코드 간결화, 유지보수 용이, 재사용 용이
  • 객체 지향 설계 원칙에 맞는 코드 구현

PSA (Portable Service Abstraction)

"일관된 서비스 추상화"
서비스의 기능을 접근하는 방식 자체를 일관되게 유지하면서 기술 자체를 유연하게 사용할 수 있도록 하는 것

추상화(Abstraction)

객체지향 프로그래밍 세계에서는 어떤 클래스의 본질적인 특성만을 추출해서 일반화하는 것
JAVA 에서는 대표적으로 추상클래스와 인터페이스

profile
백엔드 개발자 김예인입니다.

0개의 댓글