Spring 특징

허성은·2022년 8월 7일
0

Spring

목록 보기
1/1

POJO (Plain Old Java Object)

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

- POJO 프로그래밍이 필요한 이유

  • 재사용과 확장이 가능한 유연한 코드 작성 가능
  • 코드가 깔끔해지기 때문에 디버깅이 상대적으로 쉬움
  • 테스트의 단순화
  • 객체지향적인 설계를 제한없이 적용 가능

- POJO와 Spring의 관계

  • Spring은 POJO 프로그래밍을 지향하는 Framwork
  • POJO 프로그래밍 코드를 작성하기 위해 Spring에서 IoC/DI, AOP, PSA 기술 지원

IoC (Inversion of Control) / DI (Dependency Injection)

  • Ioc : 애플리케이션 흐름의 주도권이 사용자에게 있지 않고, Framwork나 서블릿 컨테이너 등 외부에 있는 것

  • DI : IoC 개념을 조금 구체화 시킨 것으로 객체 간의 관계를 느슨하게 해줌

  • 의존 관계 성립 : 클래스 내부에서 다른 클래스의 객체를 생성

  • 의존성 주입 : 클래스 내부에서 new를 사용해 참조할 클래스의 객체를 직접 생성하지 않고, 생성자 등을 통해 외부에서 다른 클래스의 객체를 전달 받음

  • Spring에서 애플리케이션 코드에서 이뤄지는 DI를 대신 해줌

느슨한 결합?

어떤 클래스가 인터페이스처럼 일반화 된 구성 요소에 의존하고 있는 경우로, 요구 사항의 변경에 유연한 대처 가능

강한 결합?

new를 통해 객체를 생성하는 경우


AOP (Aspect Oriented Programming)

애플리케이션에 필요한 기능 중, 공통적으로 적용되는 기능과 관련

- AOP가 필요한 이유

  • 코드의 간결성 유지
  • 객체 지향 설계 원칙에 맞는 코드 구현
  • 코드의 재사용

    애플리케이션 전반에 걸쳐 적용되는 공통 기능?
    - 트랜잭션, 로깅, 보안, 트레이싱, 모니터링 등


PSA (Portable Service Abstraction)

추상화 된 상위 클래스를 일관되게 바라보며, 하위 클래스의 기능을 사용하는 것 (일관된 서비스 추상화)

- PSA가 필요한 이유

  • 어떤 서비스를 이용하기 위한 접근 방식을 일관된 방식으로 유지함으로써, 애플리케이션의 요구 사항 변경에 유연한 대처 가능
  • Spring에서 PSA가 적용된 분야로는 트랜잭션, 메일, Spring Data 서비스 등이 있음

0개의 댓글