[CS] Spring 이란?

박상민·2023년 5월 25일
0

Computer Science

목록 보기
19/29

❗ 스프링 프레임워크란?

  • IOC/DI, AOP, PSA를 제공해주는 프레임워크
  • IOC Container를 기반으로 객체지향 설계를 도와주는 프레임워크
  • Bean의 생명주기와 주입 등을 제공해주는 프레임워크
  • POJO를 도와주는 툴
  • 객체지향적으로 설계한 POJO를 유지하며 애플리케이션을 쉽고 효과적으로 개발할 수 있도록 지원하는 프레임워크

❗ 스프링 프레임워크 특징

엔터프라이즈 서비스 기술을 POJO 방식으로 개발된 애플리케이션 핵심 로직을 담은 코드에 제공하는 것이 스프링의 가장 강력한 특징과 목표이다.

  • IOC / DI

    • 두개의 오브잭트를 분리해서 만들고, 인터페이스를 두어 느슨하게 연결한 뒤 실제 사용할 대상은 DI를 통해 외부에서 주입받는다.
    • 활용방법
      • 의존 대상의 구현을 변경
      • 핵심기능의 동적인 변경
      • 부가기능 추가
      • 프록시 : 필요한 시점에서 실제 사용할 오브젝트를 초기화하고 리소스를 준비하게 해주는 지연 로딩을 적용하려고 할 때
      • 템플릿 / 콜백 : 콜백을 얼마든지 만들어서 사용할 수 있다는 건 개발을 통한 유연한 확장성을 보여주는 것이며, 템플릿은 한 번 만들어두면 계속 재상요할 수 있다는 건 확장에도 변하지 않는다.
      • 싱글톤과 오브젝트 : DI를 프레임워크로 이용한다는 건 DI 대상 오브젝트를 컨테이너가 관리한다는 의미이다. 스프링에서는 싱글톤 외에도 다양한 스코프를 갖는 오브젝트를 만들어 DI에 사용할 수도 있다. HTTP 요청 당 하나의 오브젝트가 만들어지거나, HTTP 세션 당 하나씩 오브젝트를 만들어지게 할 수 있다.
  • AOP

    • 공통 관심 사항을 구현한 코드를 비즈니스 로직에 영향 없이 삽입해 주는 기술이라고 할 수 있다.
  • PSA

    • PSA는 환경과 세부 기술의 변화에 관계없이 일관된 방식으로 기술에 접근할 수 있게 해준다.
    • 서비스의 추상화의 좋은예는 JDBC
      • JDBC라는 표준스펙이 존재하기 때문에 DBMS를 오라클을 사용하던, MYSQL을 사용하던 공통된 방식으로 코드를 작성할 수 있다. 데이터베이스 종류에 관계없이 같은 방식으로 제어할 수 있는 디자인 패턴(어댑터 패턴)을 적용해 다수의 기술을 공통 인터페이스로 제어할 수 있도록 한 것을 서비스 추상화라고 한다.
  • IOC Container
    스프링 스테레오 타입의 객체들을 싱글톤으로 관리하고 다른 객체에 주입이 필요하다면 IoC Container가 직접 주입도 시켜준다. 여기서 제어의 역전(IOC)이 발생한다. 객체는 특정 객체가 아닌 타입에 의존하게 되면서 실제 구현체에 대해서는 모르는 상태를 유지하는 것이다.

profile
💡 클린코드를 지향하는 Backend Developer

0개의 댓글