Spring Framework에 대해

오의석·2022년 10월 18일

스프링

목록 보기
2/16

1. 배경

Low Level의 API를 이해하지 못하더라도 편하게 애플리케이션 개발을 원함(단순 반복도 많음)
-> EJB가 생김(Enterprise JavaBean)
-> EJB는 복잡한 스펙으로 개발의 효율성이 떨어짐.RMI 기반
-> 웹사이트도 점점 커짐. 엔터프라이즈급 서비스 필요
-> EJB를 사용하지 않고, 엔터프라이즈 어플리케이션을 개발하는 방법을 만듦
-> AOP,DI같은 프로그래밍 방법론 가능, POJO로 전언적인 프로그래밍 모델 가능해짐
-> 점점 POJO + 경량 프레임워크 사용하기 시작함
-> 경량 프레임워크로 Hibernate, JDO, iBatis(MyBatis), Spring이 생겨남

2. 장점

거창한 컨테이너 필요 없음. 오픈소스 프레임워크라 무료. 모든 플랫폼에서 사용 가능.
JEE가 제공하는 다수의 기능 지원 중. (DI, AOP같은 기능도 지원중)

3. 구조

(1) POJO (Plain Old Java Object) = 오래도니 자바 오브젝트(직독직해)
특정한 자바 모델이나 기능,프레임워크를 따르지 않는 순수한 자바 객체.

  • SRP을 지켜야함. 재사용될 수 있는 객체여야 함.

(2) PSA = portable service abstraction = 일관성 있는 서비스 추상화
환경 변화에 영향을 안받고 일관된 방식으로 접근환경을 제공하는 추상화 구조.
즉, 잘 구현된 인터페이스를 의미.
다른 기술로 바뀌어도 나의 코드가 바뀌지 않게 작성하는 것

(3) IoC/DI

  • IoC = Inversion of Control = 제어의 역전
    "객체를 new하고 생성하여 개발자가 관리하는 것 -> Spring Container가 관리"으로 역전
    스프링 컨테이너로는 BeanFactory,ApplicationContext가 있다.
BeanFactory
클래스를 통해 객체를 생성하고 전달.(Bean 등록, 생성, 조회, 반환 관리)
Lazy-loading(지연로딩) = 메서드나 클래스가 빈 로딩 요청을 받는 시점에 인스턴스를 만들고 로딩하는 방법

ApplicationContext
BeanFactory를 상속받음. 부가 서비스를 추가로 제공
Pre-loading(사전로딩) =  모든 빈들과 설정 파일들이 ApplicationContext에 의해 로드 요청이 될 때 인스턴스로 만들어지고 로드된다.

  • DI = Dependency Injection = 의존관계 주입
    객체간의 의존성을 Spring container가 자동으로 연결해주는 것. xml혹은 annotataion을 사용하여 객체간의 연결성을 적용해준다.
IOC에 대해
(1) Dependency Lookup		-> JNDI Lookup
DL은 (의존성 검색)을 의미한다.
<사용법>
1. ApplicationContext 이용
	ApplicationContext context;	
    context.getBean(UserRequest.class);
2. ObjectFactory 이용
3. ServiceLocatoryFactoryBean 이용
4. Lookup 어노테이션 사용
5. GetMapping 어노테이션 사용
	

(2) Dependency Injection 	
DI는 (의존성 주입)을 의미한다.
ㄱ. Setter Injection
ㄴ. Constructor Injection
ㄷ. Method Injection

(4) AOP = Aspect-Oriented Programming = 관점 지향 프로그래밍
공통 부분과 핵심 기능을 나눠주는 역할.
공통적으로 반복/중복되는 부분을 분리함으로써 유지보수 및 재사용성 높아짐.
핵심 기능 개발에 집중 가능

(용어 설명)
RMI : Remote Method Invocation, 원격 매소드 호출을 의미. 분산되어 존재하는 객체 간의 메시지 전송을 가능케 하는 프로토콜.
JEE : Java Enterprise Edition. 자바 EE 플랫폼은 자바 SE 플랫폼을 기반으로 그 위에 탑재됩니다. 자바 EE 플랫폼에서는 대규모, 다계층, 확장성, 신뢰성 그리고 보안 네트워킹 어플리케이션의 개발과 실행을 위한 API 및 환경을 제공하고 있습니다.

4. SpringFramework Module (실제로는 20개 이상 됨)

(1) Core : 스프링 프레임워크의 핵심기능. (주요 컴포넌트 = Bean Factory)
(2) Context : Bean Factory를 상속하는 ApplicationContext를 구현.
Application 생명주기 이벤트, 유효성 검증 등을 지원함.
Email, JNDI접근, EJB 연계.. 다수의 엔터프라이즈 서비스 제공
(3) AOP : Interceptor, point cut 사용으로 AOP 지원
(4) DAO : JDBC 코딩 부분 줄여줌. 트랜잭션 관리 기능도 제공
(5) ORM : MyBatis, Hibemate, JPA등 과의 통합 제공
(6) Web : 멀티파트 file upload와 같은 기본 웹 기능을 제공함.
(7) Web MVC : 웹 MVC 프레임워크를 제공( REST 서비스 구현도 포함됨)

profile
끊임없이 나아가는 사람이 되어볼게요.

0개의 댓글