스프링 부트3 이전과 이후 사용 가능한 자바 버전의 범위가 다름
스프링 부트 2는 자바 8 버전 이상을 사용했지만, 스프링 부트 3은 자바 17버전 이상을 사용해야 함
[자바 17 버전 주요 변화]
1) 텍스트 블록
: 여러 줄의 텍스트를 작성하려면 \n을 사용했지만 """로 감싼 텍스트를 사용해 여러 줄의 택스트를 표현 가능
String query11 = "SELECT * FROM \"items\"\n"+
"WHERE \"status\"=\"ON_SALE\"\n" +
"ORDER BY \"price\";\n";
String qeury17 = """
SELECT * FROM "items"
WHERE "status" = "ON_SALE"
ORDER BY "price";
""";
2) formatted() 메서드
: 값을 파싱하기 위한 메서드
String textBlock17 = """
{
"id" : %d
"name" : %s,
}
""".formatted(2, "juice");
3) 레코드
: 데이터를 전달하는 목적으로 객체를 더 빠르고 간편하게 만들기 위한 기능
: 상속할 수 없고, 파라미터에 정의한 필드는 private final로 정의
: 게터(getter)를 자동으로 만들기 때문에 애너테이션이나 메서드로 게터 정의를 하지 않아도 됨
record Item(String name, int price){
//파라미터가 private finalfh wjddml
}
Item juice = new Item("juice", 3000);
juice.price() // 3000
4) 패턴 매칭
: 타입 확인을 위해 사용하던 instanceof 키워드를 조금 더 쉽게 사용할 수 있도록 함
// 11 버전
if(o instanceof Integer){
Integer i = (Integer) o;
// 생략
}
// 17 버전
if(o instanceof Integer i){
}
5) 자료형에 맞는 case 처리
static double getInegerValue(Object o){
return switch(o){
case Double d -> d.intValue();
case Float f -> f.intValue();
case String s -> Integer.parseInt(s);
default -> 0d;
};
}
6) Servlet, JPA의 네임 스페이스가 Jakarta로 대체
: 패키지 네임 스페이스가 javax.*에서 jakarta.*로 변경
7) GraalVM기반의 스프링 네이티브 공식 지원
: 스프링 애플리케이션을 네이티브 이미지로 컴파일해 JVM에 구동되는 애플리케이션에 비해 시작 시간과 메모리 오버 헤드를 줄일 GraalVM 기반의 스프링 네이티브 공식 지원
: JVM 실행 파일과 비교해 네이티브 이미지를 사용하면 가동 시간이 짧아지고 메모리를 더 적게 소모
'학습 기록 > 스프링 부트3 백엔드 개발자 되기[자바편]' 카테고리의 다른 글
[02장.4] 2. 테스트 컨트롤러 살펴보기 (0) | 2023.08.23 |
---|---|
[02장. 4] 1. @SpringBootApplication 이해하기 (0) | 2023.08.21 |
[02장. 3] 3. 자동구성 (0) | 2023.08.21 |
[02장.3] 2. 스프링 부트 스타터 살펴보기 (0) | 2023.08.21 |
[02장.3] 1. 스프링 부트3 둘러보기 예제 (0) | 2023.08.21 |