[프레임워크]

Troy·2023년 6월 16일

프레임워크(Framework)란?

  • 사전적 의미는 '어떤 것을 구성하는 구조 또는 뼈대'
  • 소프트웨어적 의미로는 '기능을 미리 클래스나 인터페이스 등으로 만들어 제공하는 반제품

장점

  • 일정한 기준에 따라 개발이 이루어지므로 개발 생산성과 품질이 보장된 애플리케이션을 개발할 수 있음.
  • 개발 후 유지보수 및 기능의 확장성에서도 고품질 보장

스프링 프레임워크

  • 스프링프레임워크 는 자바 웹 애플리케이션 개발을 위한 오픈 소스 프레임워크

컨테이너란?

  • 톰캣은 서블릿 컨테이너라고 부르는데, 그 이유는 톰캣을 실행하면 톰캣은 서블릿의 생성, 초기화, 서비스, 실행, 소멸에 관한 모든 권한을 가지고 서블릿을 관리
  • 스프링은 애클리케이션에서 사용되는 여러가지 빈(클래스객체)을 개발자가 아닌 스프링이 권한을 가지고 직접 관리

스프링의 특징

  • 가볍고 배우기도 쉬우며 경량 컨테이너의 기능을 수행
  • 제어 역행(IoC, Inversion of Control) 기술을 이용해 애플리케이션 간의 느슨한 결합을 제어함
  • 의존성 주입(DI, Dependency Injection) 기능을 지원함
  • 관점 지향(AOP, Aspect-Oriented Programming) 기능을 이용해 자원 관리함
  • 영속성과 관련된 다양한 서비스를 지원함
  • 수많은 라이브러리와의 연동 기능을 지원함

  • 의존성 주입: 클래스 객체를 개발자가 코드에서 생성하지 않고 프레임워크가 생성하여 사용하는 방법
  • 제어 역행 : 서블릿이나 빈 등을 개발자가 코드에서 생성하지 않고 프레임워크가 직접 수행하는 방법
  • 관점 지향 : 핵심 기능 외 부수 기능들을 분리 구현함으로써 모듈성을 증가시키는 방법

의존성주입

  • 연관 관계를 개발자가 직접 코딩을 통해 컴포넌트(클래스)에 부여하는 것이 아니라 컨테이너가 연관 관계를 직접 규정하는 것
  • 코드에서 직접적인 연관관계가 발생하지 않으므로 각 클래스의 변경이 자유로워짐
    -> 코드를 CRUD할 때 다른 코드에 영향을 미치면 좋은 코드가 아니다.

장점

클래스들 간의 의존 관계를 최소하하여 코드를 단순화할 수 있다.
애플리케이션을 더 쉽게 유지 및 관리할 수 있음
기존 구현방법은 개발자가 직접 코드안에서 객체의 생성과 소멸을 제어했지만 의존성 주입은 객체의 생성, 소멸과객체 간의 의존 관계를 컨테이너가 제어함

제어의 역전

  • 기존 코드에서는 개발자가 직접 객체를 제어했지만 스프링프레임워크에서는 객체의 제어를 스프링이 직접 담당
  • IoC의 종류도 여러가지이며, 일반적으로 스프링에서는 DI로 IoC의 기능을 구현하므로 IoC보다는 DI라는 용어를 더 많이 사용함.

How to?

  1. 생성자에 의한 주입
  2. Setter에 의한 주입

Lazy-init

서블릿은 기본적으로 브라우저에서 요청 발생 시 메모리에 로드됨. 최초로 요청을 한 사람은 결과를 늦게 받게 됨. 로드 시간 단축을 위해 로드온스타트업 기능을 제공

스프링 설정파일을 xml에 빈태그로 설정 -> 내가 선언한 bean 모두 한번에 로드됨
자원을 낭비하는 것을 방지하기 위해 lazy-init이라는 속성을 이용해서 빈을 언제 실행할지 지정 가능
lazy-init

  • false : 바로 서버에 업로드
  • true : 요청 또는 사용할 때 업로드
  • default : 바로 서버에 업로드
profile
코린이 N년차입니다

0개의 댓글