spring boot 프로젝트 생성

유나·2023년 2월 15일
0

Spring Boot

목록 보기
1/2

먼저 스프링 부트 프로젝트를 생성하기 위해 spring initializr 에 들어간다.

들어가면 다음과 같은 화면이 나온다.

📖 project

  • 모듈을 설정하는 부분이다. 현재는 gradle(maven과 ant의 장점을 모아둠)을 많이 사용하는 추세이다.

여기서 Gradle - Groovy를 선택해준다.

📖 language

  • java를 선택해준다.

📖 Spring Boot version

  • 2.7.8버전을 선택해준다.
    (SNAPSHOT이 붙은 버전은 아직 만들고 있는 버전이다.)

📖 packaging (빌드 파일 타입)

  • Jar로 선택하면 tomcat이 자동으로 세팅되어 단독으로 실행이 가능하다.

📖 java version

  • 11로 선택한다.

📖 dependencies

  • Spring Web (web)
  • Spring Data JPA (web)
  • MySQL Driver (SQL)
  • Lombok (Developer Tools)
    Lombok은 코드를 크게 줄여주어 가독성을 크게 높힐 수 있는 라이브러리이다.

이제 모든 준비는 끝났다! 이제 하단에 있는 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은 클래스와 메서드에 추가하여 다양한 기능을 부여하는 역할이다.

  • Annotation을 활용하여 Spring Framework는 해당 클래스가 어떤 역할인지 정하기도 하고, Bean을 주입하기도 하며, 자동으로 getter나 setter를 생성하기도 한다. 특별한 의미를 부여하거나 기능을 부여하는 등 다양한 역할을 수행할 수 있다.

위에서 우리가 추가한 Lombok에 해당하는 Annotation은 대표적으로 GetterSetter가 있다.

다시 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 => ; 나옴
    }
}

@Contorller vs @RestController

@Controller는 Spring을 MVC 패턴으로 이용하는 등의 경우에서 View를 반환하기 위해서 사용하는 반면에 @RestController는 Json 형태의 데이터를 반환하는 역할을 한다.
(사실 뭐가 다른건지 확실하게 모르겠음..)

@GetMapping vs @RequestMapping

아직 이 둘을 이해하기엔 API에 대한 이해가 부족하기 때문에 추후에 api에 대한 이해가 되면 추가하도록 하겠다.

@RequestMapping

요청 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;
}

orm이란?

= object relationship mapping

  • ORM 사용 이유, 장단점
    이 블로그를 통해서 더 자세히 알 수 있다.
    아마도 DB에 정보를 저장할 수 있는 ?? 연결해주는 그런 역할을 해주는 것 같다.

테이블을 만들어주자

  • TABLE 생성
    테이블 생성에 관련된 어노테이션은 위 블로그를 통해 알 수 있다.

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> {

}
profile
개발자가 되고싶은 초보

0개의 댓글