본문 바로가기

SpringBoot

(26)
[스프링 부트 3 백엔드 개발자 되기] ch 4. 스프링 부트 3과 테스트 1. 테스트 코드 개념 익히기  1) 테스트 코드 - 테스트 코드는 작성한 코드가 의도대로 잘 동작하고 예상치 못한 문제가 없는지 확인할 목적으로 작성하는 코드- test 디렉터리에서 작업한다.  given-when-then 패턴 - given은 테스트 실행을 준비하는 단계 - when은 테스트를 진행하는 단계 - then은 테스트 결과를 검증하는 단계  ex) 새로운 메뉴를 저장하는 코드를 테스트 @DisplayName("새로운 메뉴를 저장한다.")@Testpublic void saveMenuTest() { //given : 메뉴를 저장하기 위한 준비 과정 final String name = "아메리카노"; final int price = 2000; final Menu americ..
[스프링 부트 3 백엔드 개발자 되기] ch 3. 스프링 부트 3 구조 이해하기 1. 스프링 부트 3 구조 살펴보기  - 스프링 부트는 각 계층이 양 옆의 계층과 통신하는 구조를 따른다. - 각 계층은 서로 소통할 수는 있지만 다른 계층에 직접 간섭하거나 영향을 미치지 않는다.   - 스프링 부트에는 프레젠테이션, 비즈닛, 퍼시스턴스 계층이 있다. 이 계층이 통신하며 프로그램을 구성한다.  1) 프레젠테이션 계층  - HTTP 요청을 받고 이 요청을 비즈니스 계층으로 전송하는 역할을 한다. 컨트롤러가 바로 프레젠테이션 계층 역할을 한다. 2) 비즈니스 계층  - 모든 비즈니스 로직을 처리한다. 비즈니스 로직이란 서비스를 만들기 위한 로직을 말한다. 서비스가 비즈니스 계층 역할을 한다.  3) 퍼시스턴스 계층  - 모든 데이터베이스 관련 로직을 처리한다. 이 과정에서 데이터베이스에 접..
[스프링 부트 3 백엔드 개발자 되기] ch 2. 스프링 부트 3 시작하기 1. 스프링과 스프링 부트  - 스프링 부트는 스프링 프레임워크를 더 쉽고 빠르게 이용할 수 있도록 만들어주는 도구   스프링 부트의 주요 특징  톰캣,제티,언더토우 같은 웹 애플리케이션 서버(web application server, WAS)에 내장되어 있어서 따로 설치를 하지 않아도 독립적으로 실행할 수 있다. 빌드 구성을 단순화하는 스프링 부트 스타터를 제공한다. XML 설정을 하지 않고 자바 코드로 모두 작성할 수 있다. JAR를 이용해서 자바 옵션만으로도 배포가 가능하다. 애플리케이션의 모니터링 및 관리 도구인 스프링 액츄에이터(spring actuator)를 제공한다.   2. 스프링 콘셉트 공부하기  1) 제어의 역전과 의존성 주입  - 스프링의 모든 기능의 기반을 제어의 역전(IoC)와 의..
[스프링 부트 3 백엔드 개발자 되기] ch 1. 자바 백엔드 개발자가 알아두면 좋은 지식 1. 서버와 클라이언트  - 클라이언트(client)는 서버로 요청하는 프로그램을 모두 일컬어 말한다. 서버(server)는 클라이언트의 요청을 받아 처리하는 주체이다.  2. 데이터베이스  - 데이터베이스(Database)는 여러 사람이 데이터를 한 군데 모아놓고 여러 사람이 사용할 목적으로 관리하는 데이터 저장소이다. - 클라이언트에서 SQL, 즉 데이터베이스를 조작하기 위한 언어로 데이터베이스 관리 시스템에 데이터를 요청하면 데이터베이스 관리 시스템은 데이터베이스에서 데이터를 꺼내 응답한다.  RDB- Relational Database의 약자로 관계형 데이터베이스라는 뜻이다. - RDB가 아닌 데이터베이스를 NoSQL 또는 NewSQL로 구분한다. - 관계형 데이터베이스는 데이터를 행(row)과 ..
[스프링부트 3 백엔드 개발자 되기] ch 0. 개발환경 구축하기 1. 스프링 부트 3 프로젝트 만들기  - 그레이들 설정 파일인 build.gradle을 수정  build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.0.2' // 스프링 부트 플러그인 id 'io.spring.dependency-management' version '1.1.0' //스프링의 의존성을 자동으로 관리}group = 'me.choijiwoo'version = '1.0-SNAPSHOT'sourceCompatibility='17' //자바 소스를 컴파일할 때 사용할 자바 버전repositories { mavenCentral() //의존성을 받을 저장소}dependencies { implemen..
[Do it] 3장 스프링 부트 고급 기능 익히기(6) 1. 마크다운 적용하기 마크다운(markdown) - 텍스트 기반의 마크업 언어 - HTMl과 달리 쉽고 간단한 문법을 사용하며 텍스트 편집기를 통해 웹상에서 글자를 강조하거나 제목, 목록, 이미지, 링크 등을 추가할 때도 유용하게 활용 가능 1) 마크다운 설치하기 build.gradle - 스프링 부트가 내부적으로 관리하는 라이브러리에 포함되면 버전 정보가 필요 없고 포함되지 않으면 버전 정보가 필요 - commonmark는 스프링 부트가 내부적으로 관리하는 라이브러리가 아니어서 버전 명시 2) 마크다운 컴포넌트 작성하기 - 질문이나 답변의 '내용' 부분에 마크다운 적용 CommonUtil.java package com.example.demo; import org.commonmark.node.Node;..
[Do it] 3장 스프링 부트 고급 기능 익히기(5) 1. 추천 기능 추가하기 - [추천] 버튼을 통해 질문이나 답변을 본 다른 사용자들이 반응을 남길 수 있도록 '추천' 기능을 구현 1) 엔티티에 속성 추가 - 답변을 추천한 사용자(SiteUser)가 DB에 저장될 수 있도록 관련 속성을 질문, 답변 엔티티에 추가 - 하나의 질문에 여러 사람이 추천할 수 있고 한 사람이 여러 개의 질문을 추천할 수 있기 때문에 @ManyToMany 사용 Question.java package com.example.demo.question; import java.util.Set; .... import jakarta.persistence.ManyToMany; @Getter @Setter @Entity public class Question { .... @ManyToMany ..
[Do it] 3장 스프링 부트 고급 기능 익히기(4) 1. 글쓴이 항목 추가하기 - 질문 또는 답변을 작성할 때 사용자 정보도 DB에 저장 - 게시판의 질문 목록과 답변 상세 페이지에 '글쓴이' 항목 추가 1) 엔티티의 속성 추가 질문 엔티티에 author 속성 추가 Question.java package com.example.demo.question; import java.time.LocalDateTime; import java.util.List; import com.example.demo.answer.Answer; import com.example.demo.user.SiteUser; import jakarta.persistence.CascadeType; import jakarta.persistence.Column; import jakarta.persis..