2023.10.23
Day46 세 줄 요약
Spring 프레임워크를 통해 웹 어플리케이션을 효율적으로 개발할 수 있다.
Spring 프레임워크를 다른 말로 'DI 컨테이너' 혹은 'IoC 컨테이너' 라고도 부른다.
의존성을 주입(DI)할 때 자연스럽게 IoC가 일어난다.
기본 개념 및 용어
프레임워크(Framework)
어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조
소프트웨어 분야에서는 '개발에 있어서 하나의 뼈대 역할을 하는 것'을 지칭하는 용어로 쓰임
여러 기능을 가진 클래스와 라이브러리가 합쳐진 형태
- 웹 프레임워크 : 웹 서비스 개발을 위한 최적의 환경이 갖춰진 프레임워크
- ex) Spring(Java), Django(Python), Laravel(PHP), Ruby on Rails(Ruby) 등
모듈화
하나의 시스템(혹은 프로그램)을 여러 개의 기능적 구성요소(모듈)들의 조합으로 구성하는 설계 방식
다형성, 재사용성을 효율적으로 활용할 수 있는 설계 방식
Spring (= Spring Framework)
Java 어플리케이션(주로 웹 관련)을 개발함에 있어 포괄적인 인프라구조를 지원하는 Java 플랫폼
JVM에서 작동
* 특징
1) POJO(Plain Old Java Object) 방식
: 단순히 getters & setters로 구성된 가벼운 객체구성 방식을 의미
- 무겁고 종속성이 강한 객체를 다룬 EJB에 반대해 탄생한 개념
- 특정 인터페이스를 직접 구현하거나 상속받을 필요가 없어 기존 라이브러리를 지원하기 용이
- Spring에서 POJO는 곧 'Beans'를 의미
* Beans?
: 애플리케이션의 핵심을 이루는 객체로, Spring IoC 컨테이너에 의해 인스턴스화, 관리, 생성됨
- 사용자가 설정한 메타데이터(XML 파일)에 의해 생성
- 컨테이너는 해당 XML 파일을 통해 Bean의 생성, Life cycle, Dependency(종속성) 등을 알 수 있음
2) AOP(Aspect Oriented Programming), 관점지향 프로그래밍
: 여러 모듈에서 공통적으로 사용하는 기능을 분리해서 관리하는 방식
- 객체지향 프로그래밍에서 보다 더 발전된 형태로, 객체 자체가 아닌 '어떤 일을 처리하는가'에 포커스
- 한마디로 '기능'에 중점을 두고 큰 범위로 묶어 모듈화 효율을 개선한 방식
3) DI(Dependency Injection), 의존성 주입
: 구성요소(객체) 간의 관계가 해당 소스코드 내부가 아닌 외부로부터 설정이 되어 정의되는 방식
- A 객체가 B,C 객체를 '사용(참조)'한다. = A 객체는 B,C 객체에 '의존'한다.
- 외부에서 객체를 주입받는 방식을 통해 객체간 결합이 약한(=유지보수가 용이한) 프로그램 설계 가능
- Spring에선 메타데이터(XML, annotation)를 기반으로 IoC 컨테이너에 의해 DI가 이루어짐
4) IoC(Inversion of Control), 제어의 역전 또는 역전 제어
: 프레임워크의 특정 모듈이 사용자가 직접 하던 작업을 대신 해주는 과정에서 '제어가 역전되었다' 라는 표현을 사용
- 객체를 생성하고 변수에 대입하는 일을 Spring에 맡김 (생성뿐만 아니라 소멸을 포함한 라이프 사이클 전체를 관장)
- 따라서 DI 과정에서는 IoC가 자연스레 발생함(Spring 프레임워크에선 서로 뗄 수 없는 개념)
* 참고링크
'Spring-Java > Spring' 카테고리의 다른 글
Day53_Spring Legacy Project 설정 (0) | 2023.12.14 |
---|---|
Day51_MVC Architecture (2) | 2023.12.06 |
Day48_STS, Tomcat Server 설치 및 환경 설정 (0) | 2023.10.27 |
Day47_Apache Tomcat (0) | 2023.10.26 |
Java 기본 개념 정리(feat. 인터페이스, 다형성, ...) (1) | 2023.10.25 |