(5) Spring 의 핵심

728x90

Spring

  1. Spring 1.0 버전은 2004년 3월 출시, 지난 20년 세월 동안 자바 엔터프라이즈 어플리케이션 개발의 최고의 자리를 차지
  2. 스프링 프레임워크의 구성은 20여 가지로 구성, 이러한 모듈들은 스프링의 핵심기능(DI, AOP, 등) 을 제공해 주며, 필요한 모듈만 선택하여 사용 가능
  3. 현재 단일 아키텍쳐(모놀리스) 에서 마이크로서비스 아키텍쳐로 변환 중이다.
  4. 여러 가지 모듈이 있지만 그 중에서 스프링 부트, 스프링 클라우드, 스프링 데이터, 스프링 배치, 스프링 시큐리티에 중점을 둔다.
  5. 스플리의 과제는 "테스트의 용이성", "느슨한 결합" 에 중점을 두고 개발됐다.
  6. 스프링이 다른 프레임워크와의 가장 큰 차이점이 IoC 를 통한 개발이다.
  7. AOP 를 사용하여 로깅, 트랜잭션 관리, 시큐리티에서의 적용 등 AspectJ 와 같이 완벽하게 구현된 AOP 와 통합하여 사용 가능 하다.


IoC(Inversion of Control)

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

DI(Dependency Injection)

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

AOP(Aspect Oriented Programming)

관점지향 프로그래밍, 스프링 어플리케이션은 대부분 특별한 경우를 제외 하고는 MVC 로 정의된다.(Web Layer, Business Layer, Data Layer)

  • Web Layer : REST API 를 제공하며, 클라이언트 중심의 로직 적용
  • Business Layer : 내부 정책에 따른 로직을 개발하며, 주로 해당 부분을 개발하게 된다.
  • Data Layer : 데이터 베이스 및 외부와의 연동을 처리한다.

주요 어노테이션

 

728x90