스프링 부트 3과 그 이전 버전 차이점 정리
스프링 부트 3(Spring Boot 3)은 자바 17 이상을 필수로 요구하며, 성능 개선과 최신 자바 기능들을 활용할 수 있도록 설계된 점이 특징입니다. 이번 글에서는 스프링 부트 3과 이전 버전의 차이를 알아보며, 자바 최신 기능들(formatted() 메소드, 텍스트 블록, 레코드, 패턴 매칭, 자료형에 맞는 switch case 처리)과 스프링의 javax와 jakarta 전환에 대해 살펴보겠습니다.
1. formatted()
메소드
formatted()
메소드는 기존의 String.format()
메소드의 간결한 대안으로, 문자열 포맷팅을 보다 쉽게 수행할 수 있습니다.
코드 예시
기존 방식 (String.format
)
String name = "홍길동";
int age = 25;
String result = String.format("안녕하세요, 제 이름은 %s이고 나이는 %d살입니다.", name, age);
System.out.println(result);
새로운 방식 (formatted
)
String name = "홍길동";
int age = 25;
String result = "안녕하세요, 제 이름은 %s이고 나이는 %d살입니다.".formatted(name, age);
System.out.println(result);
출력
안녕하세요, 제 이름은 홍길동이고 나이는 25살입니다.
2. 텍스트 블록
텍스트 블록(Text Blocks)은 여러 줄 문자열을 더 깔끔하게 작성할 수 있는 기능입니다. 기존에는 여러 줄의 문자열을 표현할 때 불필요한 이스케이프 문자와 문자열 연결이 필요했으나, 텍스트 블록을 활용하면 이러한 번거로움을 해결할 수 있습니다.
코드 예시
기존 방식
String json = "{\n" +
" \"name\": \"홍길동\",\n" +
" \"age\": 25\n" +
"}";
System.out.println(json);
텍스트 블록 방식
String json = """
{
"name": "홍길동",
"age": 25
}
""";
System.out.println(json);
3. 레코드(Records)
레코드는 간단한 데이터 저장소 역할을 하며, equals
, hashCode
, toString
등의 메소드를 자동으로 생성해 줍니다. 보일러플레이트 코드를 줄이는 데 효과적입니다.
코드 예시
기존 방식
class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
Person person = new Person("홍길동", 25);
System.out.println(person);
레코드 사용
record Person(String name, int age) {}
Person person = new Person("홍길동", 25);
System.out.println(person);
출력
Person[name=홍길동, age=25]
4. 패턴 매칭(Pattern Matching)
instanceof
키워드를 사용한 패턴 매칭은 타입 검사와 형변환을 동시에 수행합니다.
코드 예시
기존 방식
Object obj = "홍길동";
if (obj instanceof String) {
String str = (String) obj;
System.out.println(str.toUpperCase());
}
패턴 매칭 방식
Object obj = "홍길동";
if (obj instanceof String str) {
System.out.println(str.toUpperCase());
}
5. 자료형에 맞는 switch case 처리
스위치 표현식(Switch Expressions)은 다양한 자료형에 대해 처리 가능하며, 보다 간결한 코드 작성을 지원합니다.
코드 예시
기존 방식
String role = "admin";
String message;
switch (role) {
case "admin":
message = "관리자 권한입니다.";
break;
case "user":
message = "일반 사용자입니다.";
break;
default:
message = "권한이 없습니다.";
}
System.out.println(message);
스위치 표현식 사용
String role = "admin";
String message = switch (role) {
case "admin" -> "관리자 권한입니다.";
case "user" -> "일반 사용자입니다.";
default -> "권한이 없습니다.";
};
System.out.println(message);
6. javax와 jakarta의 차이점
스프링 부트 3에서는 javax
대신 jakarta
패키지가 도입되었습니다. 이는 Java EE(Java Platform, Enterprise Edition)가 Jakarta EE로 전환되면서 발생한 변화입니다.
주요 변경점
javax.servlet
→jakarta.servlet
javax.persistence
→jakarta.persistence
코드 예시
스프링 부트 2 (javax)
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
class Member {
@Id
private Long id;
private String name;
}
스프링 부트 3 (jakarta)
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
@Entity
class Member {
@Id
private Long id;
private String name;
}
'Spring' 카테고리의 다른 글
스프링 부트 Test(어노테이션) (0) | 2024.11.16 |
---|---|
지연로딩,AOP,Mockito에 대하여 (0) | 2024.11.11 |
entity 연관관계 (0) | 2024.11.11 |
@Validation에 대하여 (0) | 2024.11.11 |
JPA와 영속성 컨텍스트, 그리고 Bean의 관계 (0) | 2024.11.10 |