스프링 프레임 워크의 특징을 한줄로 서술한다면,
" IoC와 AOP를 지원하는 경량의 컨테이너 프레임 워크"
경량
크기 측면에서 가볍다.
스프링은 여러개의 모듈로 구성되어 있으며 , 각 모듈은 하나 이상의 jar 파일로 구성되어 있다.
몇개의 jar 파일만 있으면 개발과 실행이 모두 가능하고 ,
스프링을 이용하여 만든 애플리케이션 배포 역시 매우 빠르고 쉽다.
제어의 역행 (Inversion of Control) , IoC
비즈니스 컴포넌트를 개발할 때 , 항상 신경 쓰는 것이 바로 낮은 결합도와 높은 응집도 이다.
스프링은 제어의 역행을 통해 느슨한 결합 을 유지한다.
객체 지향프로그래밍에서 객체가 다른 객체를 생성하고 ,
그 객체를 통해 필요한 기능을 수행하는 경식으로 의존관계를 유지하는데 ,
이러한 문제를 해결하기 위해 의존성 주입(DI,Dependency Injection)을 통해 객체간의 결합을 느슨하게 만드는 것이다.
즉 , IoC는 객체 생성과 라이프사이클을 애플리케이션 외부에서 제어하는 것을 의미하고
DI는 IoC를 실현하는 방식중 하나로 , 객체가 필요로 하는 의존성을 외부에서 주입하는 것이다.
Spring은 주로 DI를통해 IoC를 구현한다.
관점 지향 프로그래밍(Aspect Oriented Programming),AOP
관점 지향프로그래밍은 비즈니스 메소드를 개발 할 때 , 핵심 비즈니스 로직과 부가적인 비즈니스 로직을 분리하여 모듈화하는 프로그래밍 기법을 말한다. 공통 로직을 분리함으로써 응지보가 높게 개발할 수 있도록 지원한다.
공통으로 사용하는 기능들은 외부의 독립된 클래스로 분리하고 , 해당 기능들을 프로그램 코드에 직접 명시하지 않고 선언적으로 처리하는 것이 관점지향 프로그래밍의 기본 개념이다. 공통 기능을 분리하여 관리할 수 있으므로 응집도가 높은 비즈니스 컴포넌트를 만들 수 있을 뿐 아니라 유지보수를 혁신적으로 향상시킬 수 있다.
Spring AOP는 횡단 관심사(로깅,보안,트렌젝션)를 독립적으로 관리함으로써 코드 품질을 높이고 유지 보수성을 높이는데 효과적이다.
개발자들이 손쉽게 비즈니스 로직과 부가 기능을 분리하여 애플리케이션을 설계할 수있도록 돕는다.
컨테이너(Container)
컨테이너는 특정 객체의 생성과 관리를 담당하며, 객체 운용에 대한 필요한 다양한 기능을 제공한다.
대표적 컨테이너로 Servlet 객체를 생성하고 관리하는 Servlet 컨테이너와 EJB 객체를 생성 괄리하는 EJB 컨테이너가 있다. 그리고 , Servlet 컨테이너는 우리가 사용하는 톰캣 서버에도 포함되어 있다.
어플리케이션 운용에 필요한 객체를 생성하고 객체 간의 의존관계를 관리한다는 점에서 스프링도 일종의 컨테이너라고 할 수 있다.
Servlet 컨테이너의 동작 순서
1. WEB-INF/web.xml 파일을 로딩하여 구동.
2. 브라우저로 부터 요청을 수신.
3. 해당 객체를 찾아 생성하고 doGet() 메소드를 호출.
4. doGet() 메소드 실행 결과를 클라이언트 브라우저로 전송.
'Developer > Spring eGov4.0 (Java11, Tomcat9)' 카테고리의 다른 글
Servlet - jsp, Dynamic web project 시작 !, servlet 시작 ! (0) | 2024.10.30 |
---|---|
Servlet - jsp , Tomcat 설치하기 (1) | 2024.10.30 |
SpringBoot-MyBatis, 동적 쿼리 생성을 위한 XML 태그 끝내기 ! (0) | 2024.10.29 |
SpringBoot-MyBatis 데이터베이스를 연동하기 위한 설정 및 구조 (0) | 2024.10.28 |
Spring , 영속 계층의 프레임 워크, myBatis와 JPA차이 , OMR이란 (2) | 2024.10.28 |