전체 글 56

24일차

오늘은 Part 2. 게시판 서비스 강의의 `게시판 페이지 기능 테스트 정의` 부분을 학습하였다. 게시글과 댓글 서비스 로직의 테스트를 작성하고 서비스 부분 코드의 골격을 잡는 부분을 학습하였다. MockitoMock 객체를 쉽게 만들고, 관리하고, 검증할 수 있는 방법을 제공하는 프레임워크이다.스프링 테스트 패키지에 포함되어 있기 때문에 따로 설치할 필요가 없다.프로젝트에서@ExtendWith(MockitoExtention.class)로 사용해주었다. BDDBehavior-Driven Development의 약자로 행위 주도 개발을 말한다.테스트 대상의 상태의 변화를 테스트하는 것이고, 시나리오를 기반으로 테스트하는 패턴을 권장한다.여기서 권장하는 기본 패턴은 Given, When, Then 구조를 가..

프로젝트 2023.03.15

23일차

오늘은 Part 2. 게시판 서비스 강의의 `뷰에 디자인 붙이기` 부분을 학습하였다. 부트스트랩 example을 활용해서 뷰에 디자인을 입혔다. 백엔드를 공부하는 입장에서 최소한의 정도만 가이드를 따라서 프로젝트에 적용하였다. 부트스트랩을 따로 설치하지 않고 적용하는 방법을 선택하였는데 속도의 하락은 감수하기로 한다. 부트스트랩부트스트랩은 반응형 웹페이지를 위한 무료 소프트웨어이며 HTML, CSSM JS 템플릿을 모아둔 프레임 워크이다.프론트엔드를 공부하는 사람이라면 모르는 사람이 없을 것이다.쉽게 말하면, 다른 사람이 만들어논 CSS를 가져와서 사용하는 것이다. 부트스트랩 사용법부트스트랩 다운로드CDN을 통해 불러오기* CDN이란 웹사이트 서버가 아닌 다른 공유 공간에서 여러 웹사이트가 참조할 수 있..

프로젝트 2023.03.14

22일차

오늘은 Part 2. 게시판 서비스 강의의 `로그인 페이지 만들기` 부분을 학습하였다. 로그인 페이지는 Spring Security에서 제공하는 로그인 페이지를 사용하기로 했기때문에 따로 만들지 않는다.스프링부트 2.7 버전부터 Spring Security Config 변경사항이 발생하였다. 이 점을 참고하여 최신 버전에 맞게 프로젝트에 적용해주었다. Spring SecuritySpring 기반의 어플리케이션 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크이다. Security는 인증과 권한에 대한 부분을 Filter의 흐름에 따라 처리하고 있다. Spring Security의 Config 작성기존 방식 - WebSecurityConfigurerAdapter를 class에 상속@Confi..

프로젝트 2023.03.13

21일차

오늘은 Part2. 게시판 서비스 강의의 `게시글 페이지 만들기` 부분을 학습하였다.타임리프타임리프는 뷰 템플릿 엔진으로 JSP, Freemarker와 같이 서버에서 클라이언트에게 응답할 브라우저 화면을 만들어주는 역할을 한다.타임리프 문법th:태그 안의 값을 서버에서 전달 받은 값에 따라서 표현하고자 할 때 사용th:text태그 안에 text 할당th:utext태그 안에 text 할당, html태그가 있다면 태그 값을 반영해서 표시th:value엘리먼트들의 value 값을 지정th:with변수 값을 지정해서 사용th:caseSwitch-case 문이 필요할 때 사용*로 else를 처리${...}컨트롤러에서 전달받은 변수에 접근할 수 있으며 th:속성 내에서만 사용 가능@{...}@{...}안에 적힌 U..

프로젝트 2023.03.12

20일차

오늘은 Part2. 게시판 서비스 강의의 `게시판 페이지 만들기` 부분을 학습하였다. 게시판 서비스에서 게시판 페이지 뷰를 만드는 과정을 학습하였다. 시맨틱 태그시맨틱 태그는 의미를 부여한 태그라는 뜻이다. 태그에 의미를 부여해서 이름만 보고 어떻게 쓰이는지 짐작이 가능하게 해준다. 시맨틱 태그 종류                       footer 삽입부

프로젝트 2023.03.11

19일차

오늘은 Part2. 게시판 서비스 강의의 `뷰 엔드포인트 테스트 정의` 부분을 학습하였다. 오늘은 게시글 관련 뷰 테스트를 작성하면서 어떤 경로 뷰를 열어줄지 테스트로 명세를 뽑았다. 먼저, ArticleController를 작성하였다.import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@RequestMapping("/articles")@Controllerpublic class ArticleController {}@RequestMappingclient에서 오는 요청을 처리하기 위한 api url을 매핑할 때 Spring의 @RequestMapping이라는 어노..

프로젝트 2023.03.10

18일차

오늘은 Part2.게시판서비스 강의의 `API 구현` 부분을 학습하였다. API 검색 기능을 개발하기 위하여 QueryDsl을 학습하였다.QueryDslQueryDsl은 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해주는 프레임워크이다.QueryDsl을 사용하면 Query 생성을 자동화하여, 자바 코드로 작성할 수 있다. QueryDsl 의존성 설정build.gradle에 다음 코드를 추가해준다.// queryDSL 설정    implementation "com.querydsl:querydsl-jpa"    implementation "com.querydsl:querydsl-core"    implementation "com.querydsl:querydsl-collections"    a..

프로젝트 2023.03.09

17일차

오늘은 Part2.게시판서비스 강의의 `API 테스트 정의` 부분을 학습하였다. Spring Data RestSpring Data REST를 사용하면 별도의 컨트롤러 없이 Entity와 Repository 인터페이스를 보고 분석해서 자동으로 RESTful API를 제공해준다.= Entity와 Repository만 만들어주면 API가 자동 생성된다. 사용법의존성 추가 - HAL Explorer은 만든 API를 간단하게 테스트하기 위해 추가한다.implementation 'org.springframework.boot:spring-boot-starter-data-rest'implementation 'org.springframework.data:spring-data-rest-hal-explorer' yaml파일..

프로젝트 2023.03.08

16일차

오늘은 Part2.게시판 서비스 강의의 `데이터베이스 접근 로직 구현` 부분을 학습하였다.이전에 DB 접근 방법을 세팅하고 테스트 만든 내용을 토대로, 남은 구현이 있는지 확인하고 마무리 하는 과정이다. 테스트 데이터 생성하는 사이트아래 사이트에서 테스트 데이터를 생성하여 프로젝트에서 사용하였다.https://www.mockaroo.com/  Mockaroo - Random Data Generator and API Mocking Tool | JSON / CSV / SQL / ExcelMock your back-end API and start coding your UI today. It's hard to put together a meaningful UI prototype without making rea..

프로젝트 2023.03.07

15일차

오늘은 Part2.게시판 서비스 강의의 `데이터베이스 접근 로직 테스트 정의4` 부분을 학습하였다. JPA 다양한 연관관계 매핑연관관계의 주인연관관계를 갖는 두 테이블에서 외래키를 갖게되는 테이블이 연관관계의 주인이다.연관관계의 주인만이 외래 키를 관리(등록, 수정, 삭제) 할 수 있고, 주인이 아닌 엔티티는 읽기만 할 수 있다. @JoinColumn(name = "TEAM_ID")@JoinColumn 어노테이션은 외래 키를 매핑할 때 사용한다. name 속성에는 매핑 할 외래키 이름일 지정한다. @ManyToOne - 단방향외래키가 있는 곳에 참조를 걸고 연관관계 매핑을 한다. DB입장에서 보면 당연히 N에 FK가 있어야 한다.단방향 관계를 맺으므로 외래키가 생겼기 때문에 N의 정보들을 가져올 수 있다..

프로젝트 2023.03.06