본문 바로가기
Be Smart/Spring

스프링의 핵심

by 반월하 2021. 9. 6.
728x90

Spring


  • Spring 1.0 버전은 2004년 3월 출시
    지난 20년 가까이의 세월 동안 단 한번도 자바 엔터프라이즈 어플리케이션 개발의 최고의 자리를 차지
  • 스프링 프레이워크의 구성은 20여가지로 구성
    이러한 모듈들은 스프링의 핵심 기능 (DI, AOP, etc) 을 제공해주며, 필요한 모듈만 선택하여 사용 가능.
  • 현재 단일 아키텍쳐 (모놀리스) 마이클 서비스 아키텍쳐로 변환 중
    여기에 맞춰서 스프링도 진화하고 있는 상태.
  • 여러 가지 모듈이 있지만 그 중에서 단연
    스프링 부트, 스프링 클라우드, 스프링 데이터, 스프링 배치, 스프링 시큐리티에 중점을 둔다.
  • Spring의 과제는 "테스트의 용이성", "느슨한 결합"에 중점을 두고 개발
  • 2000년대 초반의 자바 EE 어플리케이션 작성/테스트가 매우 어려웠으며, 한번 테스트하기가 번고로웠다.
    이로 인하여, 느슨한 결합이 된 어플리케이션 개발이 힘든 상태였으며, 특히 데이터 베이스와 같이 외부에 의존성을 두는 경우 단위테스트가 불가능 했다.
  • IoC의 등장
    스프링이 다른 프레임워크와 가장 큰 차이점이 IoC를 통한 개발 진행
  • AOP
    AOP를 사용하여 로깅, 트랜잭션 관리, 시큐리티에서의 적용 등 AspectJ와 같이 완벽하게 구현된 AOP와 통합하여 사용 가능하다.

 

IoC/ DI


  • IoC(Inversion Of Control)
    스프링에서는 일반적인 Java 객체를 new로 생성하여 개발자가 관리 하는 것이 아닌 Spring Container에 모두 맡긴다.
    즉, 개발자에서 -> 프레이워크로 제어의 객체관리의 권한이 넘어갔음 으로 "제어의 역전" 이라고 합니다.

DI (Dependency Injection)


  • DI 장점
    - 의존성으로 부터 격리시켜 코드 테스트에 용이하다.
    - DI를 통하여, 불가능한 상황을 Mock와 같은 기술을 통하여, 안정적으로 테스트 가능하다.
    - 코드를 확장하거나 변경 할 때 영향을 최소화 한다 (추상화)
    - 순환참조를 막을 수 있다.

AOP


AOP (Aspect Oriented Programming)

관점 지향 프로그램

스프링 어플리케이션은 대부분 특별한 경우를 제외하고는 MVC 웹 어플리케이션에서는
Web Layer, Business Layer, Data Layer로 정의.

- Web Layer : REST API를 제공하며, Client 중심의 로직 적용

- Business Layer : 내부 정책에 따른 logic를 개발하며, 주로 해당 부분을 개발

- Data Layer : 데이터 베이스 및 외부와의 연동을 처리

 

여러가지 Annotation


728x90

'Be Smart > Spring' 카테고리의 다른 글

Spring MVC 프로젝트의 기본 구조와 실행 순서  (0) 2021.10.01
Spring Boot Validation  (0) 2021.09.07
Spring Boot  (0) 2021.09.06
Web 개론  (0) 2021.09.06
Singleton Pattern  (0) 2021.08.20

댓글