본문 바로가기
IT/Spring

Java Framework - Spring (1) : 컨테이너 / IoC

by uzzing' 2022. 5. 16.

프레임워크의 구조

  • 프레임워크 코어 (Cold Spot) : 프레임워크가 제공하는 JAR(Java Archive) 파일 ▶ ex. 뼈
  • 확장모듈 (Hot Spot) : 애플리케이션의 비즈니스 로직 추가 ▶ ex. 살
  • 메타데이터 : xml 환경설정 파일 ▶ ex. 뼈와 살을 연결해주는 연결고리

 

스프링(Spring) 프레임워크

POJO(Plain Old Java Object) 란 말 그대로 평범한 옛날 자바 객체를 의미

Not POJO 클래스 

  • POJO 이전의 자바 기술들
  • Applet / Servlet / JSP / EJB 
  • 규칙이 복잡함 ▷ 마음대로 클래스를 만들 수 없음.
  • 메모리 사용량 多 ▷ 느림, 디자인 패턴 공부 필요.

POJO 특징

  • Spring
  • 상속받는 클래스가 없음 ▷ 독립적인 클래스
  • 마음대로 만들 수 있음
  • 메모리를 덜 사용 ▷ 빠름

 

스프링(Spring) 컨테이너

tomcat 의 다른 이름 : catalina

tomcat 은 자바 클래스에 불과함 ▶ tomcat 서버를 클래스로 만들 수 있음.

Tomcat server = new Tomcat();
server.start();
// tomcat 서버를 8080 포트로 구동한 것과 똑같음.

 

Servlet Engine = Servlet Container

  1. tomcat 객체 생성
  2. Servlet Container 생성
  3. Servlet Container 가 web.xml 읽어들임

참고> web.xml 파일에 오류가 났을 경우 Servlet Container 를 생성할 때 에러가 남.

Servlet Container 는 web.xml 에 있는 콜백 메서드들을 호출하면서 라이프사이클을 관리.

=> Spring Container 동일

 

IoC(Inversion of Control) 컨테이너

컨테이너

  • 객체를 저장하고 체계적으로 관리하는 일종의 컬렉션(배열, 리스트 같은)
  • 모든 컨테이너는 자바 클래스에 불과함.
  • 다형성 = 상속 + 오버라이딩 + 형변환 

IoC

  • 객체에 대한 제어를 순방향 / 역방향으로 하는 지에 차이
  • 순제어 : 객체 생성 및 관계를 개발자가 일일이 제어하는 것
  • 역제어 : 객체 생성의 주도권을 컨테이너가 가지고 있는 것, 관계 역시도 처리
  • Spring IoC를 사용하면 객체관리 및 유지보수할 때 자바 소스를 안건들이고 유지보수가 가능함.

Spring 컨테이너의 종류

  • GenericXmlApplicationContext : 파일 시스템이나 클래스 경로에 있는 xml 파일을 로딩하여 구동하는 컨테이너
  • XmlWebApplicationContext : 웹 기반의 스프링 애플리케이션을 개발할 때 사용하는 컨테이너

lazy loading ↔ pre loading

  • lazy loading 
    • 컨테이너가 생성할 때는 아무것도 하지 않고, 클라이언트가 요청할 때 요청된 객체만 메모리에 생성
    • 장점 - 메모리를 효율적으로 사용 
    • 단점 - 느림
    • ex. Servlet 컨테이너
  • pre loading
    • 컨테이너가 생성될 때 xml 에 등록된 bean 객체를 생성
    • 장점 - 빠름 (요청이 들어오면 바로 응답)
    • 단점 - 메모리를 많이 사용
    • ex. Spring 컨테이너

 

Spring 설정 파일

  1. <beans> 루트 엘리먼트
  2. <beans> 엘리먼트
    1. init-method 속성
    2. destroy-method 속성
    3. lazy-init 속성

 

반응형

댓글