[스프링부트3 백엔드 개발자 되기] part 2 - 스프링 부트 3 시작하기

CodeKong의 기술 블로그·2023년 10월 4일
1

SPRING BOOT

목록 보기
13/24
post-thumbnail

📌 학습목표

스프링 부트 3의 상위 프레임워크인 스프링을 비교하며 스프링 부트 3에 대해 알아보고, 스프링의 콘셉트인 IoC(제어의 역전), DI(의존성 주입), AOP(관점 지향 프로그래밍), PSA(이식 가능한 서비스 추상화)를 알아본 다음 스프링부트 3 프로젝트를 만들며 스프링부트 3를 시작한다!


💡 스프링과 스프링 부트

스프링의 등장

대규모의 복잡한 데이터를 관리하는 애플리케이션인 엔터프라이즈 애플리케이션은 소프트웨어 분야가 발전하며 점점 복잡해졌습니다.

때문에 누군가 엔터프라이즈 애플리케이션을 위한 개발 환경을 제공해서 기능 개발에만 집중하는 것을 원했고 이때 스프링 프레임워크가 등장했습니다

✔️ 스프링 프레임워크는 서버 성능, 안정성, 보안을 매우 높은 수준으로 제공하였고, 덕분에 개발자들은 기능 개발에 집중할 수 있게 되었습니다.

스프링을 더 쉽게 만들어주는 스프링부트

스프링은 장점이 많지만 설정이 매우 복잡하다는 단점이 있습니다.

때문에 스프링 개발 팀에서 이런 단점을 보완하고자 스프링 부트를 출시했습니다.

스프링 부트는 스프링 프레임워크를 더 쉽고 빠르게 이용할 수 있도록 만들어주는 도구입니다.
빠르게 스프링 프로젝트를 설정할 수 있고 의존성 세트라고 불리는 스타터를 사용해 간편하게 의존성을 사용하거나 관리할 수 있습니다.

✅ 톰캣,제티,언더토우 같은 웹 어플리케이션 서버가 내장되어 있어서 따로 설치를 하지 않아도 독립적으로 실행할 수 있습니다.

✅ 빌드 구성을 단순화하는 스프링 부트 스타터를 제공합니다.

✅ XML 설정을 하지 않고 자바 코드로 모두 작성할 수 있습니다.

✅ JAR를 이용해서 자바 옵션만으로 배포가 가능합니다.

✅ 애플리케이션의 모니터링 및 관리 도구인 스프링 액츄에이터를 제공합니다.


💡 스프링 콘셉트

제어의 역전과 의존성 주입

IoC(Inversion of Control)
지금까지는 객체를 생성할 때 객체가 필요한 곳에서 직접 생성했지만 제어의 역전에서는 외부에서 관리하는 객체를 가져와 사용합니다.

DI(Dependency Injection)
앞의 제어의 역전을 사용하기 위해 DI를 사용합니다.

어떤 클래스가 다른 클래스에 의존한다는 뜻입니다.

public class A{

	//A에서 B를 주입받음
    @AutoWired
    B b;

이 예제에서는 @AutoWired를 사용해 스프링 컨테이너에서 관리하는 객체인 빈을 주입합니다.

빈과 스프링 컨테이너

스프링 컨테이너는 빈을 생성하고 소멸되기까지의 생명주기를 관리합니다.
또한 @AutoWired같은 애너테이션을 사용할 수 있게 DI를 지원합니다.

스프링 컨테이너가 생성하고 관리하는 객체로서 XML 파일 설정, 애너테이션 추가 등 여러 방법을 제공하여 빈을 스프링에 등록합니다.

@Component //클래스 MyBean을 빈으로 등록
public class MyBean{
}

관점 지향 프로그래밍

AOP(Aspect Oriented Programming)은 프로그래밍에 대한 관심을 핵심 관점, 부가 관점으로 나누어서 관심 기준으로 모듈화하는 것을 의미합니다.

이식 가능한 서비스 추상화

PSA(Portable Service Abstraction)은 스프링에서 제공하는 다양한 기술들을 추상화해 개발자가 쉽게 사용하는 인터페이스입니다.


💡 첫 번째 스프링 부트3 예제 만들기

@RestController
public class TestController{
	@GetMapping
    public String test(){
    	return "Hello, world!";
    }
}

이 코드는 사용자가 /test GET 요청을 하면 "Hello, world!" 문자열을 반환하게 해줍니다.

웹 브라우저에서 http://localhost:8080/test 로 접속하면 확인 가능합니다.

스프링 부트 스타터 살펴보기

의존성이 모여 있는 그룹인 스프링 부트 스타터는 필요한 기능을 간편하게 설정할 수 있게 해줍니다.

스타터는 spring-boot-starter-[작업유형] 이라는 명명 규칙이 있습니다.

자동 구성

스프링 부트에서는 애플리케이션이 최소한의 설정만으로도 실행되게 여러 부분을 자동으로 구성합니다.

스프링 부트 3와 자바 버전

스프링 부트 2는 자바 8 버전 이상을 사용했지만, 스프링 부트 3은 자바 17버전 이상을 사용해야 합니다.

💡 스프링 부트 3 코드 이해하기

@SpringBootApplication 이해하기

SpringBootDeveloperApplication 클래스는 자바의 main() 메서드와 같은 역할을 합니다.

@SpringBootApplication을 추가하면 스프링 부트 사용에 필요한 기본 설정을 해 줍니다.

@Configuration -> 설정파일 등록
@Repository -> ORM매핑
@Controller,@RestController -> 라우터
@Service -> 비즈니스 로직

핵심요약

✅ 스프링은 엔터프라이즈 애플리케이션을 쉽게 개발할 수 있도록 도와주는 프레임워크 입니다.
✅ IoC는 제어의 역전, DI는 의존성 주입을 뜻합니다.
✅ 스프링 부트는 스프링을 더 빠르고 쉽게 사용하기 위한 도구로서 스타터와 자동 구성을 제공합니다.
✅ 애너테이션은 자바 코드에 추가하는 표식입니다. 보통 @ 기호를 앞에 붙여서 사용합니다.
✅ @SpringBootApplication은 스프링 부트 관련된 설정을 하는 @SpringBootConfiguration, 사용자가 등록한 빈을 읽고 등록하는 @ComponentScan, 자동 설정으로 등록되는 빈을 읽고 등록하는 @EnableAutoConfiguration으로 이루어졌습니다.
✅ @Component 애너테이션이 있는 클래스는 빈으로 등록됩니다.

0개의 댓글