IT 정보/Spring

[Spring] FrameWork

개발하는 동그리 2022. 6. 15. 18:11

Framework의 장점 단점

  • 장점
    • 정해진 규약이 있다. 애플리케이션을 체계적으로 관리할 수 있다.
    • 기본적인 설계와 필요한 라이브러리를 제공해 생산성 향상
    • 코드의 재사용성이 높고, 확장성이 좋다.
  • 단점
    • 해당 Framework에 대한 학습이 필요하다. 
    • 자유롭고 유연한 개발이 불가능하다. 

 

POJO(Plain Old Java Object) 프로그래밍이란!?

2가지 규칙

  • 객체지향 원리에 충실해야 한다. (책임 / 역할 구분) _ 조건문을 사용하면 POJO가 아니다.
  • Java 스펙에 정의된 것 이외에 다른 기술이나 규약에 얽매이지 않아야 한다. 
  • 특정 환경(서버, 프레임웍)에 종속적이지 않아야 한다. 

 

장점

  • 특정 환경이나 기술에 종속적이지 않으며 재사용이 가능하고, 확장 가능한 유연한 코드를 작성할 수 있다.
  • 환경에 종속적인 코드를 애플리케이션 코드에서 제거함으로써 코드가 깔끔해진다. 
  • 코드가 깔끔해서 디버깅하기 좋고 단순하다. 
  • 객체 지향적인 설계를 제한 없이 적용할 수 있다. ⭐⭐⭐⭐⭐

 

POJO와 Spring의 관계 

Spring은 POJO 프로그래밍을 지향하는 Framework이다. 위 POJO 장점을 살린 코드를 작성하기 위해 Spring에서 3가지 기술을 지원하고 있다.

  • IoC/DI : (Inversion of control 제어의 역전) / ( Dependency injection 의존성 주입)
    • 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고, 유연한 코드를 작성할 수 있다 (낮은 결합도)
    • 가독성과 유지보수 효율이 좋아지고, 코드의 중복이 줄어든다. 
    • (스프링 컨테이너)DI 컨테이너 의존성을 넘겨서 스프링이 관리.
    • Annotation으로 할 수 도 있고, 직접 입력할 수 도 있다.
  • AOP : (Aspect Oriented Programming 관심 지향 프로그래밍)
    • 애플리케이션의 핵심 업무 로직에서 공통 기능 로직을 분리하는 것
    • 핵심 업무 로직 : 애플리케이션의 주목적
    • 공통 기능 로직 : 로깅, 보안, 트랜잭션 등등.. 공통된 기능
    • 코드의 간결성/ 객체 지향적인 설계 코딩/ 코드의 재사용
  • PSA
    • 추상화 서비스
    • 환경에 상관없이 일관된 방식으로 제공하는 추상화 구조
    • 인터페이스를 참조해서 역할을 참조할 수 있도록 구현 
    • DI를 활용해 사용할 객체만 바꿔주도록 구현

 

계층형 아키텍처

  •  API 계층 (클라이언트와 요청/응답)
  • 서비스 계층 (데이터를 받아 연산 및 처리 계층)
  • 데이터 액세스 계층 (데이터 저장소에 전달)
  • 웹 애플리케이션 

스프링 부트 사용하는 이유

  • 의존 라이브러리 관리
  • 애플리케이션 설정의 자동 구성
  • 쉽고 빠른 배포