스프링 부트 3 둘러보기
스프링 부트 스타터 살펴보기
- 스프링 부트 스타터는 의존성이 모여 있는 그룹입니다.
- 스타터는 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를 더 쉽게 사용하기 위한 의존성 모음 |
* ORM : 객체와 관계형 데이터 베이스의 데이터를 자동으로 매핑하는 것
* JPA : ORM을 사용하기 위한 기술표준 인터페이스
스프링 부트3와 자바 버전
스프링 부트2 -> Java 8버전
스프링 부트3 -> Java 17버전 이상을 사용해야한다.
자바 17의 주요 변화인 텍스트 블록, 레코드, 패턴 매칭을 보겠습니다.
텍스트 블록
이전에는 여러 줄의 텍스트를 작성하여면 \n를 추가해야 했지만 이제는 """ 로 감싼 텍스트를 사용해 여러줄의 텍스트를 표현할 수 있습니다.
String query11 = "SELECT * FROM \"items\"\n" +
"WHERE \"status\" = \"ON_SALE\"\m" +
"ORDER BY \"price\";\n";
String query17 = """
SELECT * FROM "itmes"
WHERE "status" = "ON_SALE"
ORDER BY "price";
""";
Formatted()메서드
자버 17 버전을 사용할 여러분들은 여기를 몰라도 상관없지만
이 기능이 없었을 때는 매우 불편한 방법으로 값을 파싱했다.
String textBlock17 = """
{
"id" : %d
"name" : %s,
}
""".formatted(2, "juice"); // 17버전
레코드 // 클래스 빠르게 만드는 방법 -> 파라미터는 private final -> getter는 자동
- 레코드는 데이터 전달을 목적으로 하는 객체를 더 빠르고 간편하게 만들기 위한 기능
- 레코드는 상속을 할 수 없고
- 파라미터에 정의한 필드는 private finnal로 전의
- 게터getter를 자동으로 만들기 때문에 애너테이션이나 메서드로 게터를 정의하지 않아도 된다.
record Item(String name, int price){
// 이렇게 하면 파라미터가 private finalfh 정의 된다.
}
Item juice = new Item("juice", 3000); // name, price
juice.price(); // 3000 return
패턴 매칭
- 패턴 매칭은 타입 확인을 위해 사용하던 instanceof 키워드를 쉽게 해준다.
- 이전에는 instanceof 키워드와 형변환 코드를 조합해야 했지만
- 바로 형변환을 한 다음 사용가능
// 11 버전
if (o instanceof Integer){
Integer i = (Integer) o;
}
// 17 버전
// instanceof + 형변환 함께 해준다.
if (o instanceof Integer i){
}
자료형에 맞는 case 처리
switch-case문으로 자료형에 맞게 case 처리 가능
static double getIntegerValue(Object o){
return switch (q){
case Duble d -> d.intValue();
case Float f -> f.intValue();
case String s -> Integer.parseInt(s);
defalut -> 0d;
};
}
Servlet, JPA의 네임 스페이스가 Jakarta 로 대체
스프링 부트 2버전을 사용하고 있다면 패키지의 이름을 javax에서 jakarta를 사용하게 변경
GraalVM 기반의 스프링 네이티브 공식 지원
- 스프링 애플리케이션을 네이티브 이미지로 컴파일때 JVM에 구동되는 애플리케이션에 비해
- 시간과 메모리 오버 헤드를 줄일 GraalVM 개반의 스프링 네이티브를 공식 지원
@SpringBootApplication 애너테이션 확인
- Spring-boot 에서 main() 메서드와 같은 역할을 하는
- SpringApplication.run() 메서드는 애플리케이션을 실행한다.
@SpringBootApplication// java의 main 메서드와 같은 시작 메소드를 지정한다.
public class SpringBootDeveloperApplication {
public static void main (String[] args){
SpringApplication.run(SpringBootDeveloperApplication.class, args); // main으로 사용할 클래스, 커맨드라인의 인수
}
}
- @SpringBootApplication 애터테이션을 추가하면 스프링 부트 사용에 필요한 기본 설정을 해준다.
- SpringApplication.run() 메서드는 애플리케이션을 실행
- 첫 번째 인수는 스프링 부트 3 애플리케이션의 메인 클래스로 사용한 클래스
- 두 번째 인수는 커맨드 라인의 인수들을 전달
@SpringBootApplication과 연관된 애너테이션, 설정관련 애너테이션
@SpringBootConfiguration
- tm프링 부트 관련 설정을 나타내는 애너테이션
- 스프링의 @Configuration을 상속해서 만든 애너테이션이다.
@ComponentScan
- 사용자가 등록한 빈을 읽고 등록하는 애너테이션
- @Component라는 애너테이션을 가진 클래스들을 찾아 빈으로 등록하는 역할
- @Component do너테이션 보다는 용도에 따른 애너테이션을 사용하므로 한번식 컨트롤 + 클릭으로 보고오자
애너테이션명설명
@Configuration | 설정 파일 등록 |
@Repository | ORM 매핑 |
@Controller, @RestController | 라우터 |
@Service | 비즈니스 로직 |
* ORM : 객체와 관계형 데이터 베이스의 데이터를 자동으로 매핑
@EnableAutoConfiguration // 자동 구성을 활성화 하는 애너테이션
- 스프링 부트에서 자동 구성을 활성화하는 애너테이션
- 스프링 부트 서버가 실행 될 때 스프링 부트의 메타 파일을 읽고 정된 설정들을 자동으로 구성하는 역할
- spring.factories의 파일에 있는 클래스들이 모두 @EnableAutoConfiguration을 사용할 때 자동 설정한다.
테스트 컨트롤러 살펴보기
@RestController // 라우터 역할
public class TestController {
@GetMapping("/test") // /test GET 요청이 오면 test() 메서드 실행
public String test(){
return "Hello, world!";
}
}
- @RestControllers는 라우터 역할을 하는 애너테이션
- 라우터란 HTTP 요청과 메서드를 연결하는 장치
- 이 애너테이션이 있어야 클라이언트의 요청에 맞는 메서드를 실행 가능
- 지금의 경우 TestController를 라우터를 지정해 /test 라는 GET 요청이 왔을 때 test() 메서드를 실행하도록 구성
- @RestController을 보면 @Component 애너테이션을 발견가능하다.
- @RestControllers -> @Controller -> @Component 애너테이션을 가진다.
앞서 설명한 @Repository, @Service, @RestControllers 모두 @Component를 가지고 있다.
핵심 요약
- 스프링은 엔터프라이즈 애플리케이션을 쉽게 개발할 수 있도록 도와주는 프레임워크
- IoC는 제어의 역전, DI는 의존성 주입을 뜻한다.
- 스프링 부트는 스프링을 더 빠르고 쉽게 사용하기 위한 도구로서 스타터와 자동 구성을 제공한다.
- 애너테이션은 자바 소스코드에 추가하는 표식 보통 @ 기호를 앞에 붙여서 사용
- JDK 1.5 버전부터 사용할 수 있다.
- 메타 데이터(데이터에 대한 설명을 담고 있는 데이터)의 비중이 가장 크다.
- @SpringBootApplication은 스프링 부트 관련된 설정을 하는 @SpringBootConfiguration,
- 사용자가 등록한 빈을 읽고 등록하는 @ComponentScan
- 자동 설정으로 등록되는 빈을 읽고 등록하는 @EnableAutoConfiguration으로 만들어짐
- @Component 애너테이션이 있는 클래스는 빈으로 등록
- @Controller, @RestController, @Configuration, @Repository, @Service 모두
- @Component 애너테이션을 가지고 있다.
'개인공부 > 스프링 부트 3 백엔드 개발자 되기' 카테고리의 다른 글
스프링 부트 - 4장_스프링부트3의 테스트 (0) | 2023.06.29 |
---|---|
스프링 부트 - 3장_스프링부트3 구조 이해하기 (0) | 2023.06.25 |
스프링 부트 - 2장_2 스프링 부트 3시작하기 (0) | 2023.06.23 |
스프링 부트 3 - 2장 _1 DI와 IOC (0) | 2023.06.22 |
스프링 부트 3 백엔드 개발자 되기 - 1장 이론 (0) | 2023.06.22 |