코딩자율학습 스프링부트3 1주차

고태경·2024년 1월 14일
0
post-thumbnail

1장 스프링부트 시작하기

버전 정보

JAVA17, 스프링부트 3.2.0 사용
IDE : itelliJ

start.spring.io 사이트에서 각종 도구를 추가한 후 만들어진 압축 파일을 통해 프로젝트 생성

localhost:8080
  • localhost의 IP 주소는 127.0.0.1
  • WAS인 톰캣이 포트번호 8080에서 수행됨

1분 퀴즈

1분 퀴즈
웹 사이트 주소에 파일명을 직접 명시할 경우 서버는 src > main > resources > static 에서 파일을 찾음!

셀프체크 P.56

2장 MVC 패턴 이해와 실습

MVC 패턴

Model : 데이터를 관리하는 역할
View : 웹 페이지의 화면을 담당하는 뷰 템플릿
Controller : 클라이언트의 요청에 따라 서버에서 이를 처리하는 역할

mustache

뷰 템플릿을 만드는 도구, 즉 뷰 템플릿 엔진을 의미
ex) 템플릿 엔진은 jsp 등등..

annotation

소스 코드에 추가해 사용하는 메타 데이터(컴파일 및 실행 과정에서 코드를 어떻게 처리해야 할지 알려주는 추가 정보)의 일종

Controller

package com.example.firstProject.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller									    // 이 파일은 컨트롤러임
public class FirstController {
    @GetMapping("/hi")							// hi라는 요청을 받아 접수
    public String niceToMeetYou(Model model) {
        model.addAttribute("username", "태경"); // 모델에 변수 등록
        return "greetings"; 				   // mustache 파일 반환
    }
}

1분 퀴즈

'뷰 템플릿'이란 웹 페이지를 일종의 틀로 만든 것이다.
'컨트롤러'는 클라이언트의 요청을 받아 서버에서 이를 처리하는 역할을 한다.
'모델'은 뷰 템플릿에서 사용되는 데이터를 관리하는 역할을 한다.
'Controller'은 이 클래스가 컨트롤러임을 선언한다.
'GetMapping'은 클라이언트의 URL 요청을 받아 특정 컨트롤러의 메서드가 처리하게 한다.

동작 과정

1분 퀴즈

컨트롤러의 메서드 반환값은 뷰 템플릿 페이지의 확장자를 포함하지 않아도 됨 !

layout

1분 퀴즈

  • 'layout'이란 화면에 요소를 배치하는 것을 말한다. 웹 페이지는 같은 요소로도 어떻게 배치하느냐에 따라 다른 느낌을 줄 수 있다.
  • '부트스트랩'이란 웹 페이지를 쉽게 만들 수 있도록 작성해 놓은 코드 모음으로 미리 작성한 html/css/js 코드를 가져다 쓸 수 있다.
  • '템플릿 파일'이란 코드를 하나의 틀로 만들어 변수화하는 것을 말한다.

셀프체크 p.93

폼 데이터

< form >태그에 실려 전송되는 데이터
서버의 컨트롤러가 객체(=DTO)에 담아 받음

  • mustache 코드가 바뀔 땐 서버 재시작을 하지 않고 빌드만 다시 해도 된다!
  • name 속성을 사용하여 dto의 필드와 연결한다.

1분 퀴즈

< form >태그의 method 속성에는 get과 post 방식을 사용할 수 있다.

DB 저장

H2 db 사용

JPA

자바 언어로 db에 명령을 내리는 도구

entity & repository

  1. DTO를 엔티티로 변환하기
  2. 리파지터리를 이용해 엔티티를 DB에 저장하기

src > main > java > com.example.firstProject > controller
src > main > java > com.example.firstProject > dto
src > main > java > com.example.firstProject > entity 엔티티 생성
src > main > java > com.example.firstProject > repository (인터페이스 생성)
src > main > resources > templates : View

// src > main > java > com.example.firstProject > repository > 인터페이스명

public interface ArticleRepository extends CrudRepository<엔티티의 클래스 타입, 엔티티의 대푯값 타입>{

}

레포지토리 선언, 의존성 주입 DI (@Autowired)

📁 src/main/java/com/example/firstProject/controller/ArticleController.java

private ArticleRepository articleRepository; 
(중략)
Article saved = articleRepository.save(article);

스프링부트는 알아서 객체를 만들기 때문에 new 키워드 없이 만들어 객체를 만들지 않아도 됨
(@Autowired)

1분 퀴즈

'@Entity'란 JPA에서 제공하는 어노테이션으로, 이를 부여받은 클래스를 기반으로 DB 속 테이블이 생성됩니다.
'CrudRepository'란 JPA에서 제공하는 인터페이스로, 이를 상속해 엔티티를 관리할 수 있습니다.
'@Autowired'는 스프링 부트에서 제공하는 어노테이션으로, 이를 컨트롤러의 필드에 부여할 수 있습니다. 해당 어노테이션은 스프링부트가 만들어 놓은 객테를 가져와 주입해 줍니다.

테이블 : db에서 데이터를 저장하는 틑
레코드 : 테이블의 행을 표현하는 또 다른 말
CRUD : 데이터의 생성/조회/수정/삭제를 뜻하는 말
INSERT : 테이블에 데이터를 생성하는 SQL 문
SELECT : 테이블에 데이터를 조회하는 SQL 문

롬복

코드를 간소화해 주는 라이브러리, 어노테이션으로 긴 코드 구현을 줄여줌

1분 퀴즈

build.gradle : 롬복을 설치하기 위해 값 변경이 필요한 파일
AllArgsConstructor : 모든 필드를 매개변수로 하는 생성자를 만드는 롬복 어노테이션
ToString : toString() 메서드를 대체하는 롬복 어노테이션
Slf4j : 로깅 기능을 사용하기 위해 필요한 롬복 어노테이션
log.info : 출력하기 위하는 데이터를 로그를 찍기 위해 사용하는 구문

profile
컴퓨터정보과

0개의 댓글