leehyeon-dv 님의 블로그

스프링 부트 3 둘러보기 본문

spring/spring 이론

스프링 부트 3 둘러보기

leehyeon-dv 2024. 12. 20. 04:50

01. 📌TestController.java 파일을 만들어 코드 입력

           (/test GET요청시 "test"문자열 반환)

@RestController
public class TestController {
    @GetMapping("/test")
    public String test() {
        return "test";
    }
}

 

02.📌 실행

 

localhost(현재사용중인 컴퓨터) : 8080(포트번호) / test(경로)

이처럼 웹 브라우저에서 요청할 주소에 맞게 코드를 작성하면 웹 사이트나 웹 애플리케이션을 개발 할 수 있다 

 

 

✏️스프링 부트 스타터

의존성이 모여있어 필요한 기능을 간편하게 설정할 수 있다 

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를 더 쉽게 사용하기 위한 의존성 모음

 

 

실제 설정되어있는 스타터보기 

 

🔻build.gradle

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

 

🔻IDE 가장 오른쪽에 [Gradle]에 dependencies항목에 compileClasspath같은 것을 보면  web 스타터를 확인가능하다

이 스타터는 spring MVC를 사용해 RESTful을 포함한 웹 애플리케이션 개발하는데 사용한다 

 

📌자동구성

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

( 나중에 개발 시에 구성하지 않은 부분인데 스프링에서 자동으로 어떻게 구성했는지 확인할때를 위해 알아야함)

 

spring-boot-autoconfigure/spring.factories를 검색한다

 

이렇게 보이는 게 프로젝트에 쓰일 구성 후보들입니다 

스프링부트를 시작할 때 이 파일에 설정되어있는 클래스를 모두 불러오고 프로젝트에서 사용할 것들만 자동으로 구성해 등록한다  

 

 

 

📌스프링 부트와 자바 버전

스프링 부트 3는 자바 17버전 이상을 사용해야합니다 

  • 텍스트 블록 = 이전에는 여러줄을 작성하려면 \n을 추가해야했지만 """로 감싼 텍스트를 사용하면 여러줄의 텍스트 표현가능하다
String query11="SELECT * FORM \"item\"\n" +
    "Where \"status\" = \"ON_sale\"\n" +
    "order by \"price\";\n";
    
String query17 = """
    SELECT * FORM "item"
    Where "status" = "ON_sale
    order by "price";
    """;

가독성이 좋아짐을 볼 수 있다 

  • formatted() 메서드 = 값을 파싱하기위한 메서드
String textBlock17 = """
{
    "id": %d
    "name" : %s,
}
""".formatted(2, "juice");

 

  • 레코드 = 데이터 전달을 목적으로 하는 객체를 더 빠르고 간편하게 만들기 위한 기능

*상속을 할수 없고 파라미터에 정의한 필드는 private final로 정의된다

record Item(String name, int price){ }

Item juice = new Item("juice", 3000);
juice.price();

 

  • 패턴매칭 = 타입 확인을 위해 사용하던 instanceof 키워드를 좀 더 쉽게 사용할 수 있게 해준다
//11버전
if ( o instanceof Integer){
    Integer i = (Integer) o;
    
}
//17버전
if (o instanceof Integer i) {

}

 

 

  • 자료형에 맞는 case 처리 

switch-case 문으로 자료형에 맞게 case 처리를 할 수도 있다

static double getIntegerValue(Object o){
    return switch (o) {
        case Double d -> d.intValue();
        case Float f -> f.intValue();
        case String s -> Integer.parseInt(s);
        default -> 0d;
    };
}

 

'spring > spring 이론' 카테고리의 다른 글

스프링 부트와 테스트  (1) 2024.12.21
스프링 부트 3 코드&구조 이해하기  (0) 2024.12.21
스프링 부트 시작하기  (0) 2024.12.20
백엔드 개발자가 알아두면 좋은 지식  (1) 2024.12.19
테스트 코드  (4) 2024.11.28