Home Spring Core 핵심 모듈에 대해서
Post
Cancel

Spring Core 핵심 모듈에 대해서

봄(Spring)!

개발자에게 봄이 올것이라 말하는 강력한 Spring 프레임워크에 대해 이번 포스팅에서는 Spring Core 핵심 모듈을 알아보자.

(내 인생에 봄은 언제오나….)

아키텍쳐 출처:https://docs.spring.io/spring-framework/docs/5.0.0.RC2/spring-framework-reference/overview.html

핵심기술

Spring Framework는 약 20여개의 모듈로 구성되어 있고 이것은 다시 크게 Core Container, Data Access/Integration, Web, AOP(Aspect Oriented Programming), Instrumentation, Messaging 및 Test로 나뉜다.

코어 컨테이너(Core Container)

스프링을 구성하는 핵심 모듈로 Beans, Core, Context, SpEL로 구성되어 있다.

  • Beans : 스프링에서 관리하는 객체 Bean의 인스턴스화를 지원하는 모듈로 BeansFactory를 통해 생성된 Bean은 Spring이 제어권을 갖고 관리한다.
  • Core : 모듈에서 핵심을 담당하는 것으로 각각의 스프링 모듈들은 이 코어를 상속/구현 받아 사용되며 어노테이션, 컨버터, 상수 등 다양한 클래스를 제공한다.
  • Context : 앞서 봤던 Core와 Beans들이 Context 기반위에 구축되고 실제로 다양한 기능들과 함께 모듈화 한것으로 Beans의 개념을 확장한다.
  • SpEL(Spring Expression Language) : JSP의 EL을 Spring에 맞게 확장시킨 버전으로 런타임에서 객체의 대한 쿼리의 조작을 지원하는 일종의 표현식이다.

아키텍쳐 실제 Context안에 Bean이 존재하는 모습

출처:http://kospiotr.github.io/wiki/spring-core-presentation/

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

  • 관점지향 프로그래밍 : 어떠한 로직을 핵심적인 관점, 부가적인 관점에 따라 분류하여 모듈화 하는 것을 말한다.
  • AOP : 관점지향 프로그래밍을 위한 기본 기능을 제공한다.
  • Aspects : AOP 프레임워크 AspectJ를 사용할 때 필요한 모듈이다.
  • Instrument : 계측 지원 및 클래스 로더를 구현하는 모듈로 런타임이나 컴파일 타임 등 Java 클래스의 동작을 로깅하거나 모니터링하기 위해 유용한 모듈

원하는 서비스마다 새로운 기능을 추가하는 것은 번거로울 수 있는데 이 기능을 어노테이션을 개발하여 붙여 사용하는 방법도 AOP라고 볼 수 있다.

메시징(Messaging)

서로 다른 구성 요소간에 통신을 가능하게 하는 기술로 Message, MessageChannel, MessageHandler 등의 메시지 기반 애플리케이션의 통합 프로젝트를 포함하고 있다.

이 부분은 추가적인 학습이 필요하다.

데이터 액세스/통합 (Data Access/Integration)

데이터에 접근하는 방법을 제공하는 모듈로 JDBC, ORM, OXM, JMS, Transaction이 있다.

  • JDBC(Java Database Connectivity) : 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다.
  • ORM(Object Relational Mapping) : 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해 주는 것을 말하며 객체의 조작을 통해 SQL을 실행할 수 있다.
  • OXM(Object-XML Mapping) : 객체를 XML로 변환하는 것을 말한다.
  • Transactions : DB 조작을 위해 수행하는 작업의 단위로 Spring에서 제공하는 설정파일이나 어노테이션으로 범위나 규칙을 정할 수 있다.

웹(Web)

스프링에서 자체적으로 가지고 있는 Spring MVC 모듈로 WebSocket, Servlet, Web, Portlet이 있다.

  • WebSocket : 서버와 브라우저간 연결을 위한 통신 프로토콜이다.
  • Servlet : 웹 프로그래밍에서 클라이언트의 요청을 처리하고 결과를 클라이언트에 전송하는 기술의 모듈로 Spring MVC 와 전통적인 MVC 기능을 제공하는 모듈이다.
  • Web : 웹 애플리케이션 이용에 편리한 기능을 제공한다.
  • Portlet : 포틀릿 환경의 MVC 구현 기능을 제공하는 것으로 복합 페이지의 일부 컨텐츠를 제공하는 방식이다.

포틀릿 컨테이너가 각각의 포틀릿의 생명주기를 관리하며 필요한 자원 정보를 제공한다.

마무리

이번 시간에는 Spring의 핵심 모듈에 대해 알아보았다. Spring을 사용하면 개발자는 필요한 모듈을 사용하여 간편하게 개발을 할 수 있다. 다음 시간에는 공공데이터 API와 Spring Boot를 활용한 예제 프로젝트를 진행해보겠다.

개인적인 이해를 바탕으로 작성한 글 입니다. 피드백 언제든 환영합니다!