[Spring]스프링 프레임워크

이용준·2022년 12월 18일
0

Spring

목록 보기
1/6
post-thumbnail

Spring Framework란

이전 Java EE(엔터프라이즈 에디션)의 스펙을 구현한 EJB의 기술 복잡도 증가로 인한 성능 저하에서 벗어나 EJB 시절 이후'봄(Spring)'으로 새로 시작한다는 것을 의미한다.

  • java/Kotlin 기반의 웹 프레임워크

주요 특징

  • POJO(Plain Old Java Object)
    - 별도 프레임워크 없이 특정 인터페이스를 직접 구현하거나 상속 받을 필요 없어 기존 라이브러리 지원 용이 및 객체가 가볍다.

  • AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)

    • 여러 모듈에서 공통적으로 사용하는 기능 분리해 관리 가능.
      • 관리, 관리하는 모듈을 상하/인터페이스 관계없이 별도로 마련한다는 개념

        더 쉽게 이야기하자면 군대에서 보급품을 받는다고 가정하자. 상급부대(연대, 사단)에서 보급품을 내려받는 게 아니라. 국군복지단이나/군수사령부 아저씨가 직접 가져오는 것을 생각해보면 쉽다. 당연히 군수사령부 예하부대 아저씨도 대대 소속이므로 상하 관계가 없지만 보급품에 한해서만 배부해주는 것이다.

  • DI(Dependency Injection, 의존성 주입)

    • 프로그래밍에서 구성요소 간 의존 관계가 소스코드 외부에서 설정을 통해 정의 되는 방식이다.
    • 코드 재사용을 통해 활용성 높이고, 모듈간 결합도 납출 수 있다.
    • 기존 new를 통한 객체 생성 대신 외부에서 객체를 주입한다.
    • 의존성 주입예시
    public class Member{
      @Id
      @GeneratedValue(strategy = GenerationType.IDENTITY)
    
      private Long memberId;
    }
    public class MemberControll{
      privaet Member member;
      
      public MemberControll(Member member){
        this.member = member;
    }
  • IoC(Inversion of Control, 제어 역전)

    • 외부 라이브러리 코드가 개발자의 코드 호출
    • 제어권이 프레임워크에 있어 필요에 따라 스프링 프레임워크가 사용자 코드 호출
    • 개발자는 프레임워크가 정한 틀에 따라 적절한 코드를 작성하면 된다.
  • 생명주기 관리

    • 스프링 프레임워크는 Java 객체의 생성, 소멸을 직접 관리하며, 필요한 객체만 사용할 수 있다.

구조

  • Core

    • IoCDI 기능 제공
  • DAO

    • JDBC 추상 계층 제공 (JDBC는 자바의 데이터베이스 커넥터이다.)
    • 데이터가 담긴 VO(Value Object) 클래스를 이용해 사용한다.
  • ORM

    • JPA, Hibernate와 같은 ORM이나 MyBatis 같은 데이터베이스 API등과 통합할 수 있는 기능 제공
  • AOP

    • 스프링 프레임워크에서 제공하는 AOP 패키지를 제공한다.
    • (실무에서는 로그찍기용이 대부분이라 한다 - 나무위키 - )
  • Web

    • Spring Web MVC, Struts, WebWork등 웹 어플리케이션 구현에 도움되는 기능 제공
  • JEE

    • EJB, JMX 등의 엔터프라이즈 J2EE 스펭게 관한 기능 제공

Spring WebFlux

  • 2017년 Spring Framework 5.0 출시와 함께 도입된 새로운 모듈
  • 기존 Servlet 기반 Spring MVC 단점을 해소하고자 만들어진 모듈
  • 주로 non-blocking과 함수형 프로그래밍, reactive stream의 구현 등에 초점
  • 의존관계가 달라지므로 기존 Spring MVC 프로젝트와 양립 불가
  • 비동기/non-blocking 특성상 리퀘스트 수 많을수록 SpringMVC에 비해 탁월한 성능을 보이나 CPU 의존적 처리에서는 성능 하락 문제가 있다.

  • IoC
  • PSA
  • Aspect
  • 바인딩
profile
뚝딱뚝딱

0개의 댓글