먼저 스프링 부트 프로젝트를 생성하기 위해 spring initializr 에 들어간다.
들어가면 다음과 같은 화면이 나온다.
📖 project
여기서 Gradle - Groovy를 선택해준다.
📖 language
📖 Spring Boot version
📖 packaging (빌드 파일 타입)
📖 java version
📖 dependencies
이제 모든 준비는 끝났다! 이제 하단에 있는 Generate 버튼 눌러주자!
그럼 하단에 zip 파일이 나오는데 이 파일을 이제 원하는 폴더에 압축을 풀어준 뒤 Intellij로 해당 파일을 실행해보자!
와우! 우리의 새로운 프로젝트가 생성이 완료되었다!
이 상태에서 자바 파일에 있는 TodoApplication을 실행해주면 ERROR가 뜨게 된다.
여기서 properties를 yml로 바꿔주는데 아직 이해를 하지 못했으므로 이 블로그를 참고해보자!
(Spring Boot에서 application.yml vs application.properties 차이점)
그 다음 application.yml 파일에 DB 정보를 넣어준다!
(DB정보가 맞는지는 아직 확실하지 않은 부분)
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://210.223.18.224:3306/lyn
username: pino
password: qwer1595
jpa:
show-sql: true
hibernate:
ddl-auto: update
use-new-id-generator-mappings: false
properties:
hibernate:
format_sql: true
이제 패키지들을 만들어주자!
controller package에 UserController 클래스를 추가해준다.
@ -> 이걸 Annotation이라 한다.
Annotation은 클래스와 메서드에 추가하여 다양한 기능을 부여하는 역할이다.
위에서 우리가 추가한 Lombok에 해당하는 Annotation은 대표적으로 Getter와 Setter가 있다.
다시 UserController class로 돌아와서 코드를 작성해보자!
package com.exaple1.todo.user.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
//Get : 데이터를 조회하는 api
//Post : 데이터를 생성하는 api
//Put : 데이터를 수정할 때 (한 데이터를 전부 다 수정)
//Patch : 데이터를 수정할 때
//Delete : 데이터를 삭제할 때
@GetMapping()
public String test(){
return "Hello Spring"; //ctrl + shift + enter => ; 나옴
}
}
@Controller는 Spring을 MVC 패턴으로 이용하는 등의 경우에서 View를 반환하기 위해서 사용하는 반면에 @RestController는 Json 형태의 데이터를 반환하는 역할을 한다.
(사실 뭐가 다른건지 확실하게 모르겠음..)
아직 이 둘을 이해하기엔 API에 대한 이해가 부족하기 때문에 추후에 api에 대한 이해가 되면 추가하도록 하겠다.
요청 URL을 어떤 method가 처리할지 mapping해주는 Annotation이다.
Controller나 Controller의 method에 적용한다.
요청을 받는 형식인 GET, POST, PATCH, PUT, DELETE 를 정의하기도 한다.
요청 받는 형식을 정의하지 않는다면, 자동적으로 GET으로 설정된다.
이제 Chrom 검색창에 localhost:8080 을 입력하면 Hello Spring이 화면에 나와야하는데 내 컴퓨터로는 에러가 발생한다.
이때 rescourse -> static -> index.html 파일 만들어주면 해결이 된다.
야호! 이런 화면이 뜨면 성공한 것이다.
이제 domain 패키지에 User class를 만들어준다.
package com.exaple1.todo.user.domain;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.NoArgsConstructor;
//orm (object relationship mapping)
@Entity
@Table(name = "tbl_user")
@Getter
@NoArgsConstructor // 기본 생성자 = public user(){}
public class User {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_idx")
private long idx;
@Column(name = "user_id")
private String id;
@Column(name = "user_password")
private String password;
@Column(name = "user_name")
private String name;
}
= object relationship mapping
테이블을 만들어주자
private이므로 접근하기 위해 아까 언급했던 Lombok의 어노테이션 기능을 이용해 getter를 넣어준다.
마지막으로 repository package에 UserJpaRepository 인터페이스를 추가해준다.
package com.exaple1.todo.user.repository;
import com.exaple1.todo.user.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserJpaRepository extends JpaRepository<User, Long> {
}