12/26(목) TIL

OneTwo·2024년 12월 26일

TIL

목록 보기
3/5

스프링과 스프링의 차이

차이점1. 구성의 차이

스프링은 애플리케이션 개발에 필요한 환경을 수동으로 구성하고 정의해야됨

스프링 부트는 스프링 코어와 스프링 MVC의 모든 기능을 자동으로 로드


차이점2. 내장WAS의 유무

스프링 부트는 WAS(Wep Apllication Server)를 자체적으로 가지고 있다.

jar 파일만 만들면 별도로 WAS를 설정하지 않아도 애플리케이션을 실행할 수 있다.


제어의 역전(IoC)과 의존성 주입(DI)


제어의 역전(Inversion of Control)

  • 제어의 역전은 프로그램의 흐름 제어 권한을 개발자가 아닌 프레임워크 또는
    컨테이너가 담당하는 것을 의미

  • 객체를 생성하고 의존성을 설정하는 작업은 개발자가 수행했지만
    IoC에서는 컨테이너가 이 역할을 수행한다.

  • 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것

  • 전통적인 방식

public class Service {
    private Repository repository;

    public Service() {
        this.repository = new Repository(); // 직접 객체 생성
    }
}
  • IoC 방식
public class Service {
    private Repository repository;

    public Service(Repository repository) {
        this.repository = repository; // 외부에서 주입
    }
}
  • 장점
    • 객체 간의 결합도가 낮아져 코드의 유연성과 재사용성이 높아진다.
    • 테스트와 유지보수가 쉬워짐
    • 개발자가 핵심 로직에 집중할 수 있음

의존성 주입

  • 제어의 역전을 구현하기 위해 사용하는 방법

  • 의존성 주입은 객체가 의존하는 객체를 외부에서 주입받는 방식

  • DI의 유형

  1. 생성자 주입
public class Service {
    private Repository repository;

    public Service(Repository repository) {
        this.repository = repository;
    }
}
  1. 세터 주입
public class Service{
	private Repository repository;
	
	public void setRepository(Repository repository){
		this.repository = repository;
}
  1. 필드 주입
public class Service{
	@Autowired
	private Repository repository;
}



서블릿

서블릿이란?

Java 기반의 웹 애플리케이션에서 클라이언트 요청(주로 HTTP요청)을 처리하고

응답을 생성하기 위해 사용되는 서버 측 컴포넌트

서블릿의 주요 동작 원리

  1. 클라이언트의 HTTP 요청이 서블릿 컨테이너에 전달됨
  2. 서블릿 컨테이너는 요청을 분석하여 적절한 서블릿 인스턴스를 생성하거나
    기존 인스턴스를 사용
  3. 서블릿이 요청을 처리하고 응답을 생성하여 클라이언트에게 반환


컨테이너

웹 컴포넌트를 관리하고 실행하는 소프트웨어

컨테이너의 주요 역할

컨테이너는 다음과 같은 역할을 수행합니다:

1. 웹 컴포넌트 관리

  • 서블릿, JSP, 필터(Filter) 등의 생명 주기를 관리합니다.
  • 컴포넌트 생성, 초기화, 요청 처리, 소멸까지 전 과정을 제어합니다.

2. 요청-응답 처리

  • 클라이언트의 HTTP 요청을 분석하고 적절한 서블릿이나 JSP로 전달합니다.
  • 서블릿/JSP에서 생성된 응답 데이터를 클라이언트로 반환합니다.

3. HTTP 프로토콜 지원

  • HTTP 요청/응답 처리, 세션 관리, 쿠키 처리 등을 제공합니다.
  • HTTP 1.1, HTTPS 등 다양한 프로토콜을 지원합니다.

4. 구성 및 배포 지원

  • 웹 애플리케이션을 쉽게 배포하고 실행할 수 있는 환경을 제공합니다.
  • web.xml(배포 설명자) 또는 어노테이션 기반 설정을 통해 컴포넌트를 구성할 수 있습니다.

5. 보안 관리

  • 인증(Authentication)과 권한 부여(Authorization)를 처리합니다.
  • SSL/TLS 같은 보안 프로토콜을 지원하며, URL 기반 접근 제어를 제공합니다.

6. 스레드 관리

  • 클라이언트의 요청마다 스레드를 생성하거나 풀링하여 동시에 여러 요청을 처리합니다.

7. 리소스 관리

  • 데이터베이스 연결 풀 관리, 파일 접근, 전역 리소스 접근 등을 처리합니다.



스프링 부트 계층


프레젠테이션 계층

HTTP요청을 받고 이 요청을 비즈니스 계층으로 전송하는 역할을 한다.

컨트롤러가 대표적인 프레젠테이션 계층


비즈니스 계층

모든 비즈니스 로직을 처리한다.

서비스를 만들기 위한 로직을 처리

서비스가 비즈니스 계층 역할


퍼시스턴스 계층

모든 데이터베이스 관련 로직을 처리한다.

리포지토리가 퍼시스턴스 계층의 역할을 한다.

profile
매일 성장하는 개발자

0개의 댓글