[Spring] 스프링 프레임워크(Spring Framework)의 특징과 구조
0. 스프링 프레임워크(Spring Framework)란?
동적 웹 사이트 개발을 위한 자바 플랫폼의 오픈 소스 애플리케이션 프레임워크다.
EJB를 사용할 때 알아야만 했던 수많은 디자인 패턴을 신경 쓸 필요없다. 스프링 프레임워크 그 자체로 이미 많은 디자인 패턴이 적용되어 배포되므로 스프링을 사용하는 것 자체가 디자인 패턴을 사용하는 것이다.
1. Spring Framework의 특징
스프링은 "IoC와 AOP를 지원하는 경량의 컨테이너 프레임워크"다.
- 1) 경량적이다.
스프링은 여러 개의 모듈로 구성되어 있는 모듈식 프레임워크이다. 각 모듈은 하나 이상의 JAR 파일로 구성되어 있어 쉬운 개발과 실행이 가능하다. 또한 POJO(평범한 옛날 자바 객체, Plain Old Java Object) 형태로 객체를 관리해서 단순하고 가볍다.
- 2) 제어의 역행(IoC, Inversion of Control)과 의존성 주입(DI, Dependency Injection)
스프링은 IoC를 통해 애플리케이션을 구성하는 객체 간의 낮은 결합도를 유지한다. IoC는 말 그대로 개발자가 직접 생성하거나 제어하는 것이 아닌 스프링의 Spring Bean모듈에서 객체를 생성하고 제어하며 관리하는 특징을 잘 설명해준다. (Bean 인스턴스를 생성해주는 곳은 Bean Factory라고 불린다.)
// 기존 Java
public class TV {
private Speaker speaker;
public TV(Speaker speaker) {
this.speaker = speaker;
}
}
// Spring
@Component
public class TV {
@Autowired
private Speaker speaker;
}
DI는 객체 간의 의존성을 크게 줄여준다는 것에서 의미가 있다. 객체 간의 의존성이 줄어든다는 것은 그만큼 유지 보수를 할 때 손이 많이 가는 것을 줄여준다는 의미이기도 하다.
- 3) 관점 지향 프로그래밍(AOP, Aspect Oriented Programming)
스프링은 비즈니스 메서드를 개발할 때 사용하는 공통 로직을 외부의 독립된 클래스로 분리하여, 해당 기능을 프로그램 코드에 직접 명시하지 않고 선언적으로 처리할 수 있다. 이로 인해 응집도가 높은 비즈니스 컴포넌트를 만들 수 있으며, 유지 보수 또한 높일 수 있다. OOP의 문제점 또한 보완할 수 있다.
- 4) 컨테이너(Container)
컨테이너는 특정 객체의 생성과 관리를 담당하고 객체 운용에 필요한 다양한 기능을 제공한다. 대표적으로 Servlet과 Servlet Container가 그 예인데, Servlet 객체를 생성하고 생명 주기를 관리해주는 게 Servlet Container라는 맥락에서 스프링 또한 애플리케이션의 운용에 필요한 객체의 생성과 의존 관계를 관리한다는 점에서 일종의 컨테이너라고 할 수 있다.
2. Spring Framework의 구조
-
1. Core Container
-
1) Spring Core
Core 모듈은 DI와 Ioc 패턴을 적용할 수 있는 기본적인 스프링 프레임워크 클래스들을 포함하고 있다. 어떤 타입의 스프링 애플리케이션을 빌드하든 항상 직간접적으로 이 Spring Core에 대한 종속성을 가진다.
-
2) Spring Bean
Bean 모듈은 모든 bean들의 생명 주기를 관리한다. Spring Bean은 Bean Factory를 가지고 있는데
-
Link
책 <스프링 퀵 스타트>,
https://docs.spring.io/spring-framework/docs/4.0.x/spring-framework-reference/html/overview.html,
https://velog.io/@duckchanahn/Spring-%EC%9D%B4%EB%A1%A0%EC%A0%95%EB%A6%AC,
https://www.amitph.com/spring-framework-architecture/,
Author And Source
이 문제에 관하여([Spring] 스프링 프레임워크(Spring Framework)의 특징과 구조), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dyunge_100/Spring-스프링-프레임워크Spring-Framework의-특징과-구조저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)