본문 바로가기
Spring/Spring Framework

스프링 프레임워크의 기본 개념

by chogigang 2023. 2. 13.

 

 

Spring Framework 

 

자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션입니다.

 

 

 

IOC 컨테이너  IOC container

의존성 주입 로직을 시행하는 스프링 프레임워크 내의 기술적인 구성을

 IOC 컨테이너 라고 합니다.

 

의존성 주입이라는 개념을 가져다가 실제로 프레임워크 내에서 이 기능을 가능하게 해주는 것이

스프링 프레임워크 내에 있는 IOC 컨테이너 입니다 많이 사용하는 IOC 컨테이너는  

ApplicationContext 와 BeanFactory입니다 제가 듣는 강사 in28Minutes 는 지금까지 스프링 엔터프라이즈 프로젝트를 20개 넘게 만든 강사는  BeanFactory는 아직 한번도 안 썼습니다. 모든 프로젝트에서  ApplicationContext 를 사용했습니다.

 

BeanFactory 보다 약간 더 복잡하긴 한데 가장 많이 사용됩니다.

 

IOC 컨테이너들이 가진 중요한 기능 중 하나가 바로 자동 wiring 즉 Autowiring입니다.

 

Autowiring은 모든 의존성들을 확인하고 빈에 의존성들을 wiring 또는 injection을 하는 것입니다.

 

스프링 프레임워크는 매우 간단한 작업을 하지만 다양한 용어들이 많아서 훨씬 복잡하게 느껴집니다.

Spring Framework의 특징 POJO

POJO(Plain Old Java Object) 자바의 오브젝트 의 줄인말 입니다.이전 EJB(Enterprise JavaBeans)는 확장 가능한 재사용

이 가능한 로직을 개발하기 위해 사용 되었었는데 EJB는 한가지 기능을 위해 불필요한 복잡한 로직이 과도하게 들어가는

단점이 있었습니다.

 

그래서 다시 조명을 받은게 POJO입니다. POJO는 gettet/setter를 가진 단순 자바 오브젝트로 정의를 하고 있습니다. 이러

한 단순 오브젝트는 의존성이 없고 추후 테스트 및 유지보수가 편리한 유연성의 장점을 가집니다. 이러한 장점들로 인해 객

체지향적인 다양한 설계와 구현이 가능해지고 POJO의 기반의 Framework가 조명을 받고 있습니다. Spring Framework 에

서는 이러한 POJO을 지원하고 Spirng 홈페이지에는 이러한 글도 있습니다.

 

핵심은 코드가 더 심플 해 지고 테스트 하기 편해지며 유연해지면서 요구사항에 따라 기술적 선택을 바꿀수 있도록 되었습니다.

 

 

IOC의 구성요소 DI와 DL

 

DI 의존성 주입 

의존성 주입 각 클래스 사이에  필요한 의존 관계 빈 설정을 바탕으로 IOC가 자동 연결 합니다.

 

DL 의존성 검색

객체들을 관리하기 위해 별도의 저장소에 빈을 저장하는데 저장소에 저장되어 있는 개발자들이 컨테이너에서 제공하는 API 를 이용하여 사용하고자 하는 빈 을 검색하는 방법입니다.

 

Spring Framework의 구조 (참고 문서 https://khj93.tistory.com/entry/Spring-Spring-Framework%EB%9E%80-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-%ED%95%B5%EC%8B%AC-%EC%A0%95%EB%A6%AC)

 

 

 

 

 

Spring Core

스프링 프레임워크의 핵심   그중에서 Bean Factory Container 제일 중요한 것입니다 Bean Factory는 IOC패턴을 적용하여 객체 구성 부터 의존성 처리까지 모든 일을 자동 처리하는 역할을 하고 있기 때문입니다.

 

Spring Context

context  정보들을 제공하는 설정 파일입니다. JNDI, EJB, Validation, Scheduiling, Internaliztaion 등 엔터프라이즈 서비스들을 포함하고 있습니다.

Spring AOP

관점지향 프로그래밍을 할 수 있고 AOP를 적용 할수 있게 도와주는 모듈 입니다. 분별하게 중복되는 코드를 한 곳에 모아 중복 되는 코드를 제거 할 수 있어지고 공통기능을 한 곳에 보관함으로써 공통 기능 하나의 수정으로 모든 핵심기능들의 공통기능을 수정 할 수 있어 효율적인 유지보수가 가능하며 재활용성이 극대화합니다

Spring DAO

DAO란 Data Access Object의 약자로 데이터베이스 데이터에 접근하는 객체 입니다. JDBC DAO는 추상 레이어를 지원

함으로써 코딩이나 예외처리 하는 부분을 간편화 시켜 일관된 방법으로 코드를 짤 수 있게 도와줍니다.

Spring ORM

ORM이란 Object relational mapping의 약자로 간단하게 객체와의 관계 설정을 하는 것입니다. Spring에서는 Ibatis, Hibernate, JDO 등 인기있는 객체 관계형 도구(OR도구)를 사용 할 수 있도록 지원합니다.

Spring Web

Spirng에서 Web context module은 Application module에 내장되어 있고 Web기반의 응용프로그램에 대한 Context를 제공하여 일반적인 Web Application 개발에 필요한 기본적인 기능을 지원합니다. 그로인해 Jakarta Structs 와의 통합을 지원하고 있습니다.

Spring MVC

Spring에서는 MVC에서는 Model2 구조로 Apllication을 만들 수 있도록 지원합니다. MVC (Model-View-Controller) 프레임 워크는 웹 응용 프로그램을 작성하기위한 완전한 기능을 갖춘 MVC를 구현합니다. MVC 프레임 워크는 전략 인터페이스를 통해 고급 구성 가능하며 JSP, Velocity, Tiles, iText 및 POI를 포함한 수많은 뷰 기술을 지원하고 있습니다.

 

Layer 간의 흐름

웹 레이어, 비지니스 레이어,데이터레이어,등 레이어가 많습니다.

 

10만개의 클래스를 가진 엔터프라이즈 어플리케이션으로 개발하는 경우도 있다고 합니다.

 

10만개의 클래스가 한데 모여 있는 걸 원하지는 않겠죠 이것이 레이어를 나누는 이유입니다.

 

웹 레이어 는 UI 로직 담당  

비즈니스 레이어 는 비즈니스 로직담당 

데이터 레이어 는 데이터베이스와 통해 있죠

 

엔터프라이즈 애플리케이션에서는 여러 개의 레이어가 존재하고

각 레이어는 그 아래에 있는 레이어에 의존합니다.

 

웹 레이어 -> 비즈니스 레이어 의존하고 

비즈니스 레이어 -> 데이터 레이어 의존  

데이터 레이어 -> 데이터베이스에서 데이터를 받아옵니다.

 

 

 

 

 

 

'Spring > Spring Framework' 카테고리의 다른 글

스프링 프레임워크 중요한 용어  (0) 2023.02.27
의존성주입  (0) 2023.02.27
@Controller와 @RestController +@GetMapping  (0) 2023.02.19
스프링 빈(Spring Bean)  (0) 2023.02.18
스프링 강한 결합, 느슨한 결합  (0) 2023.02.17