Spring Framework

감자·2025년 4월 14일

Framewokr란?

애플리케이션 개발 시 필요한 기본 구조와 뼈대를 제공하는 틀
(주방)

Libarary란?

자주 사용되는 기능을 모아두는 코드의 집합
(도구함)

API(Application Programming Interface)

API를 통해서 서로 다른 프로그램들이 데이터를 주고받거나 기능을 호출하여 통신 할 수 있음

Spring Framework

Spring MVC : 전자정부 프레임워크 (수동)
Spring Boot : (자동)

다운받기

SpringFramework -> Projects -> Spring tools -> 4.29.WINDOWS X86_64 다운받기 -> tools에 넣고 알아서 풀기

Spring Framework의 주요 특징

구분설명
IoC (Inversion of Control)제어의 주체가 개발자가 아니라 프레임워크(Spring Container)에게 있음.
객체 생성, 생명주기 관리 등을 프레임워크가 담당.
개발자는 객체를 직접 생성하거나 호출하지 않고, 필요한 객체를 Container로부터 주입받아 사용.
클래스 간 결합도를 낮추고 유지보수성을 향상시킬 수 있음.
DI (Dependency Injection)설정 파일(XML)이나 어노테이션을 통해 객체 간 의존관계를 설정.
개발자가 직접 객체를 만들지 않고, Spring이 생성한 객체를 필요한 위치에 주입.
객체 간 의존을 쉽게 관리하고, 코드의 유연성과 테스트 용이성을 높임.
POJO (Plain Old Java Object)특별한 기술(J2EE, EJB 등)을 상속받지 않는 순수한 Java 객체를 의미.
Spring은 POJO 기반 개발을 지원하여 복잡한 프레임워크 의존성을 줄임.
이를 통해 개발자는 학습 곡선을 완화하고, 코드의 가독성과 유지보수성을 높일 수 있음.
AOP (Aspect Oriented Programming)로깅, 보안, 트랜잭션 관리 등 공통 관심사를 핵심 로직과 분리함.
코드 중복을 줄이고 유지보수성을 높이는 프로그래밍 기법.
Spring은 AOP를 지원하여 모듈화를 극대화함.
Spring MVCMVC(Model-View-Controller) 패턴을 기반으로 웹 애플리케이션을 개발할 수 있도록 지원.
어노테이션 기반으로 구조화하며, IoC/DI를 활용해 객체 의존관계를 관리함.
개발자가 아닌 서버가 객체를 제어하여 깔끔한 웹 애플리케이션을 구축할 수 있음.
PSA (Portable Service Abstraction)다양한 외부 라이브러리나 기술(API 등)을 사용할 때,
Spring이 제공하는 추상화 레이어를 통해 기술 종속성을 줄임.
다양한 기술 스택을 쉽게 연동할 수 있도록 인터페이스나 추상 클래스를 제공함.


Core Container을 자세하게 봐야함.

분류이름설명
계층Data 접근 계층JDBC나 DB에 연결하는 모듈
Data 트랜잭션 기능을 담당
영속성 프레임워크(MyBatis, JPA 등)와 연결
계층Web 계층 (MVC / Remoting)Spring MVC 기반으로 웹 구현 기술과 연결
RMI, Hessian, Burlap, JAX-WS, HTTP, REST API 등 리모팅 기술 제공
계층AOP 계층흐름 간 공통된 코드를 분리하여 재사용
Proxy를 통해 필요 시점에 코드 삽입
결합도 낮추고 유연성 향상
계층Core ContainerSpring의 핵심 기능 담당
IoC 기능 지원
BeanFactory 기반으로 Bean 제어 가능
-------------------------------------------------------------------------------------------------------------------
모듈spring-beans스프링 컨테이너를 이용한 객체 생성 기능 제공
모듈spring-context객체 생성, 라이프사이클 처리, 스키마 확장 기능 제공
모듈spring-aopAOP(관점 지향 프로그래밍) 기능 제공
모듈spring-webREST 클라이언트, 서블릿 필터, 파일 업로드 등 웹 개발 기반 기능 제공
모듈spring-webmvcSpring 기반 MVC 프레임워크
컨트롤러, 뷰 구현 제공
모듈spring-websocket웹 소켓 연동 기능 (Spring MVC 기반)
모듈spring-oxmXML과 자바 객체 간 매핑 처리 API 제공
모듈spring-tx트랜잭션 처리를 위한 추상화 레이어 제공
모듈spring-jdbcJDBC 프로그래밍을 쉽게 할 수 있는 템플릿 제공
모듈spring-ormHibernate, JPA, MyBatis 등 ORM 연동 지원
모듈spring-jmsJMS 메시지를 주고받기 위한 템플릿 제공
모듈spring-context-support스케줄링, 메일발송, 캐시연동, 벨로시티 등 부가 기능 제공

Spring MVC

Spring Framework 에서는 클라이언트의 화면을 표현하기 위한 View와 서비스를 수행하기 위한 개발 로직 부분을 나누는 MVC2 패턴을 지원함.

Dispatcher Servlet : 요청을 받아 알맞은 Controller 로 전달

구성 요소설명
DispatcherServlet클라이언트의 요청(Request)을 전달받고,
요청에 맞는 컨트롤러가 리턴한 결과 값을 View에 전달하여
알맞은 응답(Response)을 생성
HandlerMapping클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정
Controller클라이언트의 요청을 처리한 뒤, 결과를 DispatcherServlet에 리턴
ModelAndView컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음

| ViewResolver | 컨트롤러의 처리 결과를 생성할 View를 결정 |
| View | 컨트롤러의 처리 결과 화면을 생성
JSP나 Velocity 템플릿 파일 등을 View로 사용 |

0개의 댓글