Spring Framework 1

가수왕·2022년 12월 7일
0

Spring

목록 보기
1/4

0. 개요

이글에서 말하는 Spring은 SpringFramework을 말한다.

백엔드를 공부하며 Spring, Springboot 둘 다 배웠지만 실제 프로젝트에는 Springboot만 써봤다. 처음에는 Springboot를 선택했던 이유가 분명히 있었는데 시간이 지나자 관성적으로 저번 프로젝트에서 썼던거니까, 익숙하니까라는 관성적인 이유로 Springboot를 선택했다.
그래서 처음으로 돌아와 Spring과 Springboot의 차이에 대해 알아보려 한다.

그전에 Springboot가 Spring이 불편해서 만들어졌을텐데 Spring이 어떤 특징을 가지고 있고, 어떤점이 불편했는지를 알아보는게 먼저라는 생각이 들어 Spring에 대해 정리하고 가려고한다. 이번 글이 그 시작점이다.

1. Spring이란?

  • Spring이 등장하기 전 EJB라는 녀석을 사용했다고 한다. EJB는 트랜잭션이나 스레드풀링 같이 거창한 기능을 제공했지만 구조가 복잡해 효율이 떨어졌다고 한다.
  • 엔터프라이즈 급 앱을 만들기 위해 모든 기능을 종합적으로 제공하는 경량화된 솔루션
    -> Application 수준의 인프라 structure를 제공 즉 복잡하고 실수하기 쉬운 Low Level에 신경쓰지 않고 비즈니스 로직 개발에 전념할 수 있게 해준다.
  • DI, AOP같은 기능도 지원한다.
  • spring MVC나 spring webflux 웹 프레임워크를 제공한다. (나는 MVC를 다룰 예정이다.)

2. 삼각형...?


이 삼각형을 이루는 단어들이 Spring의 핵심들이다.

  • POJO(Plain Old Java Object)
    • 직역하면 순수한 옛날 자바 객체다. 즉, 특정 환경이나 기술에 종속적이지 객체지향의 원리에 충실한 자바 객체
    • 이전까지의 프레임워크들은 특정 인터페이스를 상속받아 사용해야했다. Spring은 그렇지 않다는 말이다.
    • 그렇기 때문에 생산성, 이식성이 향상된다.
    • 테스트가 용이하고, 객체지향 설계를 자유롭게 적용할 수 있다.
  • PSA(Portable Service Abstraction)
    • 트랜잭션,데이터 예외 변환 등 기술적인 복잡함은 추상화를 통해 LowLevel 기술부분과 기술을 사용하는 인터페이스로 분리한것
    • 예를 들면 DB가 달라져도 동일하게 적용할 수 있는 트랜잭션 처리방법같은거
  • IoC/DI(Inversion of Control / Dependency Injection)
    • 제어의 역전 / 의존성 주입
    • 이전까지는 객체가 필요할 때 만들어서 사용
    • 무조건 미리 만들어 놓고 주입
  • AOP(Aspect Oriented Programming)
    • 관점 지향 프로그래밍
    • 관심사를 분리해 소프트웨어의 모듈성을 향상
    • 공통 모듈을 여러 코드에 쉽게 적용가능
    • 공통적으로 처리해야할 행동을 외부로 빼놓고 원하는 메소드에 해당 행동을 실행하게 설정할 수 있음
    • 예를 들면 로그를찍거나 예외처리 할 때 특정 메소드에서만 실행되게 할 수 있음

0개의 댓글