차이점1. 구성의 차이
스프링은 애플리케이션 개발에 필요한 환경을 수동으로 구성하고 정의해야됨
스프링 부트는 스프링 코어와 스프링 MVC의 모든 기능을 자동으로 로드
차이점2. 내장WAS의 유무
스프링 부트는 WAS(Wep Apllication Server)를 자체적으로 가지고 있다.
jar 파일만 만들면 별도로 WAS를 설정하지 않아도 애플리케이션을 실행할 수 있다.
제어의 역전은 프로그램의 흐름 제어 권한을 개발자가 아닌 프레임워크 또는
컨테이너가 담당하는 것을 의미
객체를 생성하고 의존성을 설정하는 작업은 개발자가 수행했지만
IoC에서는 컨테이너가 이 역할을 수행한다.
다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것
전통적인 방식
public class Service {
private Repository repository;
public Service() {
this.repository = new Repository(); // 직접 객체 생성
}
}
public class Service {
private Repository repository;
public Service(Repository repository) {
this.repository = repository; // 외부에서 주입
}
}
제어의 역전을 구현하기 위해 사용하는 방법
의존성 주입은 객체가 의존하는 객체를 외부에서 주입받는 방식
DI의 유형
public class Service {
private Repository repository;
public Service(Repository repository) {
this.repository = repository;
}
}
public class Service{
private Repository repository;
public void setRepository(Repository repository){
this.repository = repository;
}
public class Service{
@Autowired
private Repository repository;
}
Java 기반의 웹 애플리케이션에서 클라이언트 요청(주로 HTTP요청)을 처리하고
응답을 생성하기 위해 사용되는 서버 측 컴포넌트
웹 컴포넌트를 관리하고 실행하는 소프트웨어
컨테이너는 다음과 같은 역할을 수행합니다:
web.xml(배포 설명자) 또는 어노테이션 기반 설정을 통해 컴포넌트를 구성할 수 있습니다.HTTP요청을 받고 이 요청을 비즈니스 계층으로 전송하는 역할을 한다.
컨트롤러가 대표적인 프레젠테이션 계층
모든 비즈니스 로직을 처리한다.
서비스를 만들기 위한 로직을 처리
서비스가 비즈니스 계층 역할
모든 데이터베이스 관련 로직을 처리한다.
리포지토리가 퍼시스턴스 계층의 역할을 한다.