Spring Framework (1)

박준서·2024년 10월 15일
11

Web

목록 보기
4/16
post-thumbnail

Framework

  • 비즈니스 로직이 빠진 반제품 상태의 애플리케이션
  • 더 쉬운 이해를 위한 예시
    • 일상 생활 속에서 발표 자료를 만들 때 파워포인트를 찾는다. 하지만 우리가 파워 포인트가 없다고 해서 발표자료를 못 만드는 것은 아니다.
    • 직접 그릴 수도 있고, 메모장으로 만들 수도 있다.
    • 좀 더 편리하게 발표 자료를 만들기 위해 파워 포인트를 사용하는 것이다.
  • 프레임워크도 위와 같이, 좀 더 편리하게 프로그램을 만들기 위해 사용하는 것이다.

Spring Framework

  • 스프링이 없어도 우리는 충분히 프로젝트를 끝낼 수 있다. 하지만 스프링이 있다면 보다 짧은 시간에 적은 노력으로 우리가 이루려는 바가 달성될 수 있다.
  • 스프링을 사용하면 개발자는 비즈니스 로직에만 집중할 수 있다.

SpringBoot

  • Spring의 경우 설정이 반이다. 설정이 아주 번거롭고 복잡하다. 이를 개선해서 설정 자동화를 이루어 낸 것이 Spring Boot 이다.
  • Spring Boot는 또한 내장 톰캣과 같은 WAS 환경을 내장해서 실행 속도도 개선했다.
  • 또한 단위테스트도 강화해서 프로젝트의 안정성도 강화했다.
  • Spring Boot와 상대적인 개념으로 이전까지의 Spring 을 레거시 스프링 이라고 한다.

Spring의 주요 특징

  • 스프링의 특징을 소개할 때엔 보통 위와 같은 스프링 삼각형을 활용한다.

DI (Dependency Injection)

  • 의존성 주입
  • 의존성 : 어떠한 행동을 수행할 때 필요한 것 혹은 사용하는 것
    • 예를들어 학교에서 학생에게 수업을 진행할 때 필요한 교안을 제공한다고 치자. 이 것을 학교가 학생에게 의존성을 주입한 것이다. 만약 해당 교안이 없어지면 학생은 학교에게 교안을 요청하면 된다.
    • 즉, 의존성은 내가 만드는 것이 아니라 밖에서 만들어서 가지고 오는 것이다.
  • DI는 필요한 의존성을 직접 생성하거나 관리하지 않는다. 대신 외부에서 만들어진 것을 주입 받아서 사용한다.

AOP (Aspect Oriented Programming)

  • 관점 지향 프로그래밍
  • 관심사의 분리를 통해 코드를 모듈화하고 재사용성을 강화하는 프로그래밍 패러다임
  • 예를 들어, 음식 배달 서비스를 들어보자.
    • 음식 배달의 핵심은 음식을 조리하는 것이다. [ 핵심 관심사 ]
    • 하지만 수익을 내야 하니 주문을 받고 배달을 하는 등의 역할 또한 수행해야 한다. [ 부가 관심사 ]
  • 핵심 관심사 (core concern)
    • 본질에 해당하는 일
  • 부가 관심사 (cross cutting concern) == 횡단 관심사
    • 부가적인 일
    • 필요없는 것은 아니다.
  • AOP는 위와 같은 부가 관심사들을 모듈화 해서 재사용하는 것을 목적으로 한다.
  • 이렇게 AOP를 사용하면 모듈화를 통해 코드의 유지보수성을 향상 시키고 디버깅을 용이하게 하는 등의 이점이 있다.

PSA (Portable Service Abstraction)

  • 공통적으로 사용할 수 있는 부분을 추상화된 레이어로 제공하는 것
  • 추상화 == 단순화
  • 복잡한 서비스를 내부에 숨겨 추상화(단순화) 시키고, 결과적으로 일관된 방식으로 여러 기술에 접근할 수 있게 도와준다.
  • 예를 들어, 우리는 자전거 기어를 동작시킬 뿐 자전거 기어가 동작하는 원리에 대해 알지 못한다
    • 위와 같이 복잡한 기술은 내부적으로 숨겨서 단순화하여 일관된 방식으로 제공하는 것을 말한다.

POJO (Plain Old Java Object)

  • 삼각형 가운데 있는 POJO는 위에서 언급했던 DI, AOP, PSA 등을 처리하기 위해 우리가 이전에 해왔던 평범한 방식대로 평범한 자바 객체를 만들어서 사용하면 된다는 것이다.
  • 과거 EJB에도 위와 같은 방식을 수행할 수 있었으나 여러 복잡한 과정이 있었고, 스프링은 그럴 일 없이 그냥 우리가 쓰던 일반 자바 객체를 사용하면 된다는 것이다.
  • 예시를 들어보자.
    • 햇빛이 강하게 쬐는 여름날, 우리가 할 수 있는 것은 선크림 바르기, 양산 펴기 등이 있다. 이 것은 내가 하는 것이다. (상속 받은 것)
    • 여기서 지구 자체적으로 큰 막을 쳐준다면 나는 그냥 나 그 자체 ( 평소 객체 )로 있으면 된다.
  • 위의 예시 처럼 아무 조건 없이 클래스가 만들어 지면 ( 나 그 자체 ) 특정 기술이나 환경에 종속될 필요가 없다. 주변에서 (지구) 필요한 것들을 나에게 제공하면 된다. 여기서 지구의 역할을 스프링 프레임 워크가 수행한다는 것이다.
profile
Back-End Developer

0개의 댓글

관련 채용 정보