스프링(Spring)

mingggkeee·2022년 4월 17일
0

Spring Framework

  • 엔터프라이즈 급 애플리케이션을 만들기 위한 모든 기능을 종합적으로 제공하는 경량화 된 솔루션
  • JEE(Java Enterprise Edition)가 제공하는 다수의 기능을 지원하고 있기 때문에, JEE를 대체하는 프레임워크로 자리잡았다.
  • 스프링의 핵심 기능은 DI(Dependency Injection), AOP(Aspect Oriented Programming)이다.
  • 스프링은 개발자가 복잡하고 실수하기 쉬운 Low level에 신경 쓰지 않고 비즈니스 로직개발에만 전념할 수 있도록 도와주는 도구라고 생각하면 쉽다.

Enterprise Application 개발 시 복잡함을 해결해주는 핵심

  1. POJO(Plain Old Java Object)
  • 특정 환경이나 기술에 종속적이지 않은 객체
  • 테스트하기 용이하며, 객체지향 설계에 자유롭게 적용가능
  1. PSA(Portable Service Abstraction)
  • 환경이나 세부기술의 변경과 관계없이 일관된 방식으로 기술에 접근할 수 있게 만들어주는 설게 원칙
  • 기술적인 복잡함은 추상화를 통해 Low Level의 기술 구현 부분과 기술을 사용하는 인터페이스로 분리
  • ex) DB에 관계없이 동일하게 적용할 수 있는 트랜잭션 처리방식
  1. Ioc/DI(Dependency Injection)
  • 유연하게 확장 가능한 객체를 만들어 두고 객체 간의 의존관계는 외부에서 다이나믹하게 설정
  1. AOP(Aspect Oriented Programming)
  • 관심사의 분리를 통해 소프트웨어의 모듈성 향상
  • 공통 모듈을 여러 코드에 쉽게 적용가능

스프링의 특징

경량컨테이너

  • 스프링은 자바객체를 담고 있는 컨테이너
  • 스프링 컨테이너는 자바 객체의 생성과 소멸과 같은 라이프사이클을 관리
  • 언제든지 컨테이너로부터 필요한 객체를 가져와 사용할 수 있도록 지원

DI 패턴 지원

  • 스프링은 설정 파일이나, Annotation을 통해 객체간의 의존 관계를 설정 가능
  • 따라서, 객체는 의존하고 있는 객체를 직접 생성하거나 검색할 필요가 없다.

AOP(관점 지향 프로그래밍) 지원

  • AOP는 문제를 바라보는 관점을 기준으로 프로그래밍하는 기법
  • 스프링은 자체적으로 프록시 기반의 AOP를 지원하므로 트랜잭션이나, 로깅, 보안과 같이 여러 모듈에서 공통으로 필요로 하지만 실제 모듈의 핵심이 아닌 기능들을 분리해 각 모듈에 적용이 가능

POJO 지원

  • 특정 인터페이스를 구현하거나 클래스를 상속하지 않는 일반 자바 객체지원
  • 스프링 컨테이너에 저장되는 자바객체는 특정한 인터페이스를 구현하거나, 클래스 상속이 없이도 사용이 가능

IoC(Inversion of Control)

  • IoC는 스프링의 핵심 기능
  • 자바의 객체 생성 및 의존관계에 있어 모든 제어권은 개발자에게 있었으나, Servlet과 EJB가 나타나면서 기존의 제어권이 Servlet Container 및 EJB Container에게 넘어가게 되었다.
  • 모든 객체의 제어권이 넘어간 것은 아니고 Servlet, EJB에 대한 제어권을 제외한 나머지 객체 제어권은 개발자에게 있다.
profile
만반잘부

0개의 댓글