Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

채채

2. 스프링 부트 3 시작하기 본문

spring boot

2. 스프링 부트 3 시작하기

HChaeEun 2023. 7. 12. 22:36

1. 스프링 부트 3 프로젝트 만들기

IntelliJ를 이용해서 JDK 17의 새 그레이들 프로젝트를 생성한다. 그레이들 프로젝트를 스프링 부트 3 프로젝트로 바꾸기 위해 build.gradle을 다음과 같이 플러그인과 의존성들을 입력한다.

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.0.2'
    id 'io.spring.dependency-management' version '1.1.0'
}

group 'org.example'
version '1.0'
sourceCompatibility = '17'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}

그리고 Gradle을 새로고침 했더니 직면한 'permittedsubclasses requires asm9' 에러

Gradle wrapper 버전 문제로 "gradle-wrapper.properties" 파일의 gradle 버전을 7.6 으로 맞춰주면 해결된다.

모든 프로젝트에는 메인 클래스가 있어야 하듯. src>main>java>package 아래 메인 클래스를 생성한다.

package springbootdeveloper;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootDeveloperApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootDeveloperApplication.class, args);
    }
}

@SpringBootApplication: 스프링 부트 사용에 필요한 기본 설정을 해줌

SpringApplication.run(애플리케이션의 메인 클래스, 커맨드 라인의 인수): 애플리케이션 실행

2. 스프링 콘셉트 공부하기

책: 스프링 부트 3 백엔드 개발자 되기

스프링 부트 실습 전에 스프링이라는 프레임워크가 돌아가는 원리를 이해하기 위해 개념을 먼저 학습한다.

스프링에서는 객체들을 관리하기 위해 제어의 역전(IoC(Inversion of Control))을 사용한다.

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

 

제어의 역전을 구현하기 위해 사용하는 방법은 DI(Dependency Injection), 의존성 주입이다.

*의존성 주입: 어떤 클래스가 다른 클래스에 의존한다는 뜻

// 객체를 주입받는 모습 예시
public class A {
    // A에서 B를 주입받음
    @Autowired
    B b;
}

@Autowired: 스프링 컨테이너에 있는 빈을 주입하는 역할.

*스프링 컨테이너: 빈을 생성하고 관리

*빈: 스프링 컨테이너에서 관리하는 객체. 빈의 이름은 클래스 이름의 첫 글자를 소문자로 바꿔 관리함

// 클래스를 빈으로 등록하는 방법 예시
@Component // 클래스 MyBean를 빈으로 등록 -> 빈의 이름: myBean
public class MyBean{
}

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

PSA(Portable Service Abstraction)은 스프링에서 제공하는 다양한 기술들을 추상화하여 개발자가 쉽게 사용하는 인터페이스를 말한다. 대표적으로 메서드 매핑을 위한 애너테이션을 예로 들 수 있다.

 

스프링 부트 스타터: 의존성이 모여있는 그룹

스타터는 spring-boot-starter-{작업유형}이라는 명명규칙이 있다.

자주 사용하는 스타터를 알아보자.

  • spring-boot-starter-web: Spring MVC를 사용해서 RESTful 웹 서비스를 개발할 때 필요한 의존성 모음(톰캣 포함)
  • spring-boot-starter-test: 스프링 애플리케이션을 테스트하기 위해 필요한 의존성 모음
  • spring-boot-starter-validation: 유효성 검사를 위해 필요한 의존성 모음
  • spring-boot-starter-actuator: 모니터링을 위해 애플리케이션에서 제공하는 다양한 정보를 제공하기 쉽게 하는 의존성 모음
  • spring-boot-starter-data-jpa:ORM을 사용하기 위한 인터페이스의 모음인 JPA를 더 쉽게 사용하기 위한 의존성 모음