본문 바로가기
부트캠프

[TIL] 유데미 X 사람인 취업 부트캠프 28일차 / spring boot

by 상똥 2024. 1. 23.

[1. 오늘 배운 것]

1. 첫 스프링 부트 어플리케이션

- CourseController

package com.in28minutes.learnspringboot.courses;

import com.in28minutes.learnspringboot.courses.bean.Course;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

@RestController
public class CourseController {
    @GetMapping("/courses")
    public List<Course> getAllCourses(){
        return List.of(new Course(1, "Learn MicroServices", "in28minutes"));
    }
}

- Course

package com.in28minutes.learnspringboot.courses.bean;

public class Course {
    private long id;
    private String name;
    private String author;

    public Course(long id, String name, String author) {
        super();
        this.id = id;
        this.name = name;
        this.author = author;
    }

    public String toString() {
        return "Course [id=" + id + ", name=" + name + ", author=" + author + "]";
    }

    public long getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getAuthor() {
        return author;
    }
}

- 결과

 

2. Spring Boot 이용해보기

- CourseController에 아래 코드를 추가한다

    @GetMapping("/courses/1")
    public Course getCourseDetails(){
        return new Course(1, "Learn MicroServices", "in28minutes");
    }

- 실행 결과

 

3. Spring Boot 추가적인 기능

- Spring Boot Actuator : 어플리케이션의 서로 다른 매트릭스를 볼 수 있고 리퀘스트 매핑도 볼 수 있어 프로덕션 상태의 어플리케이션을 쉽게 관리할 수 있게 해줌

- Spring Boot DevTools : 개발생산성을 높여주는 역할, 코드가 변경되는 직시 서버에서 변경사항을 가져오고 재시작하지 않아도 됨

 

4. Spring Boot vs Spring MVC vs Spring

- Spring framework : 핵심 기능은 의존성 주입=> 비을 정의하고 의존성의 위치와 순서를 정함 / 모듈과 프로젝트를 제공

- Spring Boot : 어플리케이션을 쉽게 구축할 수 있는 다양한 스타터 프로젝트 제공 / 많은 것을 구성하기보다 빠르게 구성하길 원한다면 사용, mvc패턴에서 필요한 많은 것들을 신속하게 해결

- Spring mvc : 모듈, 분리접근방식으로 웹 애플리케이션을 구축하도록 도움

 

5. Mybatis, H2 메모리 데이터베이스 통합

- Mybatis, H2 의존성 추가 

    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>3.0.3</version>
    </dependency>

    <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <scope>runtime</scope>
    </dependency>

- application.properties에 아래 코드 추가

spring.datasource.url=jdbc:h2:mem:testdb

- localhost:서버/h2-console로 이동

- User Name : SA 입력 후 Connect

 

6. JPA 사용하기

- 의존성 추가

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

- JPA를 사용하기 위해서는 필드 클래스 전체에 Entity어노테ㅔ이션을 붙여줘야한다

- @Entity가 붙은 클래스는 JPA에서 관리하는 것이며, 클래스 내에 @Id, @GeneratedValue를 사용하여 기본키를 결정해야 한다

- 기본키를 설정한 후 protected 또는 private으로 생성자를 추가한다

package com.in28minutes.learnspringboot.courses.bean;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;

@Entity
public class Course {
    @Id
    @GeneratedValue
    private long id;
    private String name;
    private String author;

    protected Course(){}

    public Course(long id, String name, String author) {
        super();
        this.id = id;
        this.name = name;
        this.author = author;
    }

    public String toString() {
        return "Course [id=" + id + ", name=" + name + ", author=" + author + "]";
    }

    public long getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getAuthor() {
        return author;
    }
}

 

- 설정 후 h2-console로 돌아가면 Course테이블이 생성되어있음을 확인할 수 있다

- 테이블의 이름을 바꾸고싶다면, @Entity옆에 (name="새로운테이블이름")을 붙여준다

 

7. HTTP 메서드

- 아래의 글 참고

[WEB] HTTP 메소드 (tistory.com)

 

[WEB] HTTP 메소드

1. HTTP 메소드란? - 클라이언트와 서버 사이에 이루어지는 요청과 응답 데이터를 전송하는 방식 - 서버에 주어진 리소스에 수행하길 원하는 행동 - 서버가 수행해야할 동작 * 복습!! Response Request

sangddongvoid.tistory.com

- 아래글도 참고

[WEB] HTTP 멱등성 (tistory.com)

 

[WEB] HTTP 멱등성

1. 멱등성(冪等性, idempotent) - 덮을 멱, 같을 등 (무슨 뜻인지 더 모르겠음) - 동일한 요청을 한 번 보냈을 때의 효과와 서버 = 동일한 요청을 여러번 보냈을 때 효과와 서버 - 서버의 상태가 변경된

sangddongvoid.tistory.com

 

[2. 회고]

마지막에 유데미 서버가 터졌지만 괜찮다 난 오전에 강의 다들었으니까 우하하하 강의는 미리미리 듣는게 좋은 것 같다.

오늘은 스프링 부트에 대해 배웠는데 전에 공부한 스프링의 복습시간인 것 같아 좋았다

H2연결할 때 기본 아이디가 sa인지 SA인지 아니면 둘 다 되는건지 모르겠다 확인해본다는걸 깜빡쓰 해버렸네 확인해봐야겠다

그리고 오늘 현아언니가 Raycast알려줘서 맥을 좀 더 잘 쓸 수 있게 되었다 감사합니당