Back-End/React.js, 스프링 부트, AWS로 배우는 웹 개발 101

[React.js, 스프링 부트, AWS로 배우는 웹 개발 101][백엔드 개발] - 백엔드 개발 환경 설정

얄루몬 2022. 6. 8. 03:31

본 포스팅은 '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를 이용한 의존성 주입 방식

스프링 프레임워크와 디스패처 서블릿

  • 기존에 자바에서는 동적 컨텐츠를 서블릿이 대신 처리를 해주는데 이 서블릿은 상속을 통해 서브 클래스를 만들어 사용해야 한다는 번거로움이 있다. 그러나 스프링은 디스패처 서블릿을 이미 구현해 놨기 때문에 위와 같은 불편함이 없어졌다.
  • 또한 디스패처 서블릿은 프론트 컨트롤러의 역할을 수행해 공통 처리가 필요한 부분은 공통 처리 컨트롤러를 돌려주고, 각기 다른 컨트롤러의 요청이 있다면 맞는 컨트롤러를 호출해준다.