JAVA17, 스프링부트 3.2.0 사용
IDE : itelliJ
start.spring.io 사이트에서 각종 도구를 추가한 후 만들어진 압축 파일을 통해 프로젝트 생성
localhost:8080
1분 퀴즈
웹 사이트 주소에 파일명을 직접 명시할 경우 서버는 src > main > resources > static 에서 파일을 찾음!
Model : 데이터를 관리하는 역할
View : 웹 페이지의 화면을 담당하는 뷰 템플릿
Controller : 클라이언트의 요청에 따라 서버에서 이를 처리하는 역할
뷰 템플릿을 만드는 도구, 즉 뷰 템플릿 엔진을 의미
ex) 템플릿 엔진은 jsp 등등..
소스 코드에 추가해 사용하는 메타 데이터(컴파일 및 실행 과정에서 코드를 어떻게 처리해야 할지 알려주는 추가 정보)의 일종
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 파일 반환
}
}
'뷰 템플릿'이란 웹 페이지를 일종의 틀로 만든 것이다.
'컨트롤러'는 클라이언트의 요청을 받아 서버에서 이를 처리하는 역할을 한다.
'모델'은 뷰 템플릿에서 사용되는 데이터를 관리하는 역할을 한다.
'Controller'은 이 클래스가 컨트롤러임을 선언한다.
'GetMapping'은 클라이언트의 URL 요청을 받아 특정 컨트롤러의 메서드가 처리하게 한다.
컨트롤러의 메서드 반환값은 뷰 템플릿 페이지의 확장자를 포함하지 않아도 됨 !
< form >태그에 실려 전송되는 데이터
서버의 컨트롤러가 객체(=DTO)에 담아 받음
< form >태그의 method 속성에는 get과 post 방식을 사용할 수 있다.
H2 db 사용
자바 언어로 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<엔티티의 클래스 타입, 엔티티의 대푯값 타입>{
}
📁 src/main/java/com/example/firstProject/controller/ArticleController.java
private ArticleRepository articleRepository;
(중략)
Article saved = articleRepository.save(article);
스프링부트는 알아서 객체를 만들기 때문에 new 키워드 없이 만들어 객체를 만들지 않아도 됨
(@Autowired)
'@Entity'란 JPA에서 제공하는 어노테이션으로, 이를 부여받은 클래스를 기반으로 DB 속 테이블이 생성됩니다.
'CrudRepository'란 JPA에서 제공하는 인터페이스로, 이를 상속해 엔티티를 관리할 수 있습니다.
'@Autowired'는 스프링 부트에서 제공하는 어노테이션으로, 이를 컨트롤러의 필드에 부여할 수 있습니다. 해당 어노테이션은 스프링부트가 만들어 놓은 객테를 가져와 주입해 줍니다.
테이블 : db에서 데이터를 저장하는 틑
레코드 : 테이블의 행을 표현하는 또 다른 말
CRUD : 데이터의 생성/조회/수정/삭제를 뜻하는 말
INSERT : 테이블에 데이터를 생성하는 SQL 문
SELECT : 테이블에 데이터를 조회하는 SQL 문
코드를 간소화해 주는 라이브러리, 어노테이션으로 긴 코드 구현을 줄여줌
build.gradle : 롬복을 설치하기 위해 값 변경이 필요한 파일
AllArgsConstructor : 모든 필드를 매개변수로 하는 생성자를 만드는 롬복 어노테이션
ToString : toString() 메서드를 대체하는 롬복 어노테이션
Slf4j : 로깅 기능을 사용하기 위해 필요한 롬복 어노테이션
log.info : 출력하기 위하는 데이터를 로그를 찍기 위해 사용하는 구문