[Section 2] Spring Framework 기본

dohyoungK·2023년 6월 8일
0

Spring Framework

1) Spring Framework 소개

  • Framework

    : 소프트웨어의 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것

    • 장점

    1. 효율적으로 코드를 작성가능하므로 개발자가 애플리케이션의 핵심 로직을 개발하는 것에 집중할 수 있다.
    2. 정해진 규약이 있어 애플리케이션으로 효율적으로 관리할 수 있다.
    • 단점

    1. 내가 사용하고자 하는 Framework에 대한 학습이 필요하다.
    2. 자유롭고 유연한 개발이 어렵다.
  • Library

    : 애플리케이션을 개발하는 데 사용되는 일련의 데이터 및 프로그래밍 코드

  • Framework와 Library의 차이

    : Framework는 뼈대, Library는 다양한 기능을 제공하는 부품을 의미한다. 그래서 Framework를 변경하는 일은 어렵지만, Library는 쉽게 교체가 가능하며 선택적으로 사용할 수 있다. 또한 Library는 애플리케이션 흐름의 주도권이 개발자에게 있지만 Framework는 주도권이 개발자가 아닌 Framework에 있다.

2) Spring Framework 특징

  • POJO(Plain Old Java Object) 프로그래밍

    : POJO(Java로 생성하는 순수한 객체)를 이용해 프로그래밍 코드를 작성하는 것.

    • 특징

    1. Java나 Java의 스펙에 정의된 것 이외에는 다른 기술이나 규약에 얽메이지 않아야 한다.
    2. 특정 환경에 종속적이지 않아야 한다.
    • 필요성

    1. 특정 환경, 기술에 종속적이지 않으면 재사용 가능하고, 확장 가능한 유연한 코드 작성 가능하다.
    2. 저수준 레벨의 기술과 환경에 종속적인 코드를 애플리케이션 코드에서 제거함으로써 코드가 깔끔해진다.
    3. 코드가 깔끔해지기 때문에 디버깅하기도 상대적으로 쉽다.
    4. 특정 기술이나 환경에 종속적이지 않기 때문에 테스트 역시 단순해진다.
    5. 객체지향적인 설계를 제한 없이 적용할 수 있다.
  • IoC(Inversion of Control)

    : 애플리케이션의 흐름의 주도권이 뒤바뀐 것(제어의 역전), Spring에는 IoC 개념이 DI를 통해 적용되어 있다.

  • DI(Dependency Injection)

    : 객체지향 프로그래밍에서 의존성은 객체 간의 의존성을 의미한다. 생성자를 통해 어떤 클래스의 객체를 전달받는 것을 의존성 주입이라 한다.

    • 강한 결합(Tight Coupling)

      : 만약 new 키워드를 사용해서 의존성 주입을 한다면 참조할 클래스가 바뀔 경우, 이 클래스를 사용하는 모든 클래스들을 수정해야 한다. 이처럼 new를 사용해 의존 객체를 생성할 때, 클래스 간에 강하게 결합되어 있다고 한다.

    • 느슨한 결합(Loose Coupling)

      : 클래스 간의 관계를 느슨하게 만드는 대표적인 방법을 인터페이스를 사용하는 것이다. 이처럼 어떤 클래스가 인터페이스 같이 일반화된 구성 요소에 의존하고 있을 때, 느슨하게 결합되어 있다고 한다. 그리고 Spring 기반 애플리케이션에서는 Spring이 의존 객체들을 주입해 주기 때문에 코드를 유연하게 구성할 수 있다.

  • AOP(Aspect Oriented Programming)

    : AOP에서 Aspect는 애플리케이션의 공통 관심사를 의미한다. 그리고 AOP는 관심지향 프로그래밍으로 애플리케이션에 필요한 기능 중 핵심 관심 사항에서 공통 관심 사항(로깅, 보안, 트랜잭션, 모니터링, 트레이싱 등)을 분리하는 것이다.

    • 필요성

    1. 코드의 간결성 유지
    2. 객체 지향 설계 원칙에 맞는 코드 구현
    3. 중복된 코드를 공통화해서 코드의 재사용 가능
  • PSA(Portable Service Abstraction)

    : 어떤 클래스의 본질적인 특성만을 추출해 일반화하는 것을 Abstraction(추상화)이라 한다. 그리고 추상화된 상위 클래스를 일관되게 바라보며 하위 클래스의 기능을 사용하는 것, 일관된 방식으로 해당 서비스의 기능을 사용할 수 있다는 것이 바로 일관된 서비스 추상화(PSA)이다.

0개의 댓글