-
[Spring] Spring의 구조Framework | Test/Spring 2021. 8. 16. 22:31
1. Spring의 구조
- 스프링 패키지는 필요한 부분만 골라서 쓸 수 있도록 모듈화되어져 있다.
1) AOP(Aspect Oriented Programming): 관점(관심) 지향 프로그래밍
- Spring 프레임워크에 Aspect Oriented Programming을 지원하는 기능이며, 이 기능은 AOP Alliance 기반 하에 개발되었다.
- Spring의 AOP는 advice, pointcut 필터링을 포함하는 advisor로 구성된다.
2) ORM(Object-Relational Mapping): OOP(객체 지향 프로그래밍)을 사용
- ORM 프레임워크인 Hibernate, myBatis, JDO와 결합을 지원하기 위한 기능이다. Spring ORM을 이용할 경우 Hibernate, myBatis, JDO와 쉽게 통합이 가능하다.
3) DAO (Data Access Object)
- 지금까지 일반적으로 많이 사용했던 JDBC 기반의 DAO 개발을 좀 더 쉽고, 일관된 방법으로 개발하도록 지원하고 있다. Spring DAO를 이용할 경우 현재까지 개발하던 DAO 보다 적은 코드와 쉬운 방법으로 DAO 개발이 가능하다.
4) JMX (Java Management Extensions)
- 자바 어플리케이션의 모니터링과 관리 기능을 제공
5) JCA (Java EE Connector API)
- 엔터프라이즈 시스템들을 통합하기 위한 표준 API
6) JMS (Java Message Service)
- 스프링은 JDBC API를 통합했듯 JMS API도 사용하기 쉽게 JMS 통합 프레임워크를 제공한다.
JMS는 기능적으로 대략 두 부분으로 나눌 수 있는데 메세지의 생산과 소비이다.
-> 이 부분까지 이해하기에는 아직 부족한 것 같고 관련 내용도 찾아 정리하기에 어려움이 있어 아래 블로그 링크를 reference로 남겨둔다. 해당 블로거분께서 잘 정리해 두었으니 참고할 것!https://blog.outsider.ne.kr/985
7) Spring Web
- Web Application 개발에 필요한 Web Application Context와 MultipartRequest등의 기능을 지원한다. 또한 Struts, Webwork와 같은 프레임워크의 통합을 지원하는 부분을 담당한다.
8) Spring Context
- Spring Core 바로 위에 있으면서 Spring Core에서 지원하는 기능 외에 추가적인 기능들과 좀 더 쉬운 개발이 가능하도록 지원하고 있다. 또한 JNDI, EJB 등을 위한 Adaptor 들을 포함하고 있다.
9) Portlet MVC
- 포탈서버에서 돌아가는 독립된 웹 어플리케이션
10) Remoting
- 원격 지원 기능
11) Spring Web MVC
- Spring 프레임워크에서 독립적으로 Web UI Layer에 Model-View-Controller를 지원하기 위한 기능이다. 지금까지 Struts, Webwork가 담당했던 기능들을 Spring Web MVC를 이용하여 대체하는 것이 가능하다. 또한 Velocity, Excel, PDF와 같은 다양한 UI 기술들을 사용하기 위한 API를 제공하고 있다.
12) Spring Core
- Core 컨테이너 기능.
- Spring 프레임워크의 근간이 되는 loC(또는 DI) 기능을 지원하는 영역 담당하고 있다. BeanFactory를 기반으로 Bean 클래스들을 제어할 수 있는 기능을 지원한다.
※해당 포스팅은 개발 공부를 하고 있는 학생에 의하여 작성되었으니 참고 바랍니다.
정정 필요한 내용에 대한 댓글 환영합니다.
'Framework | Test > Spring' 카테고리의 다른 글
[Spring] Error : UnsatisfiedDependencyException, NoSuchBeanDefinitionException (0) 2021.08.23 [Spring] 자바 기반 프레임워크(Struts, Spring, Hibernate 등) (0) 2021.08.17 [Spring] 스프링의 특징 - POJO란 무엇인가 (0) 2021.08.16 [Spring] 스프링 프레임워크란 무엇인가 (0) 2021.08.16 [Spring] xml 설정 파일 (0) 2021.08.15