본 포스팅은 'React.js, 스프링 부트, AWS로 배우는 웹 개발 101 - 김다정'님의 책을 보고 작성되었습니다.
목차
1. 기본 설정
2. 스프링 프레임워크와 의존성 주입
3. 스프링 프레임워크와 디스패처 서블릿
기본 설정
Build.gradle
plugins {
id 'org.springframework.boot' version '2.7.0'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
maven {url 'https://repo.spring.io/milestone'}
maven {url 'https://repo.spring.io/snapshot'}
6
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// https://mvnrepository.com/artifact/com.google.guava/guava
implementation group: 'com.google.guava', name: 'guava', version: '31.1-jre'
}
tasks.named('test') {
useJUnitPlatform()
}
스프링 프레임워크와 의존성 주입
- DI(Dependency Injection)이라고 불리우는 의존성 주입은 클래스가 의존하는 다른 클래스들을 외부에서 주입시킨다는 의미이다.
- 예시와 함께 말하자면 요구사항이 변경되었거나 비지니스 로직이 변경되었을 때 등등의 여러 상황에서 해당 코드를 일일이 개발자가 변경하는 일은 방대한 프로젝트에서는 불가능에 가까운 일이기 때문에 의존성 주입을 통해서 해당 코드만 변경해서 진행할 수 있게 하였다.
- 또한 스프링은 의존성 주입 컨테이너를 사용해서 오브젝트가 많은 상황에도 관리를 효과적으로 할 수 있게 해주었다.
스프링의 의존성 주입 방식
- 생성자를 이용한 의존성 주입 방식
- Setter를 이용한 의존성 주입 방식
스프링 프레임워크와 디스패처 서블릿
- 기존에 자바에서는 동적 컨텐츠를 서블릿이 대신 처리를 해주는데 이 서블릿은 상속을 통해 서브 클래스를 만들어 사용해야 한다는 번거로움이 있다. 그러나 스프링은 디스패처 서블릿을 이미 구현해 놨기 때문에 위와 같은 불편함이 없어졌다.
- 또한 디스패처 서블릿은 프론트 컨트롤러의 역할을 수행해 공통 처리가 필요한 부분은 공통 처리 컨트롤러를 돌려주고, 각기 다른 컨트롤러의 요청이 있다면 맞는 컨트롤러를 호출해준다.