오공완 28

29일차

오늘은 Part 2. 게시판 서비스 강의의 `게시판 페이징 구현` 부분을 학습하였다. 페이지네이션 서비스 구현페이지네이션을 스프링 서비스 빈 형태로 설계하여 현재 페이지와 총 페이지 수를 넣어주면 페이지 바에 사용할 번호 리스트를 반환하게 설계하였다.import org.springframework.stereotype.Service;import java.util.List;import java.util.stream.IntStream;@Servicepublic class PaginationService {    private static final int BAR_LENGTH = 5;    public List getPaginationBarNumbers(int currentPageNumber, int total..

프로젝트 2023.03.20

28일차

오늘은 Part 2. 게시판 서비스 강의의 `게시판 페이지 기능 구현 2` 부분을 학습하였다. 게시판 기본 조회 화면을 위한 컨트롤러를 구현하고 데이터 전달을 완료하였다.게시판 페이지 기본 정렬 속성을 부여하였는데 1페이지당 10개, 시간 내림차순으로 해주었다.    @GetMapping    public String articles(            @RequestParam(required = false)SearchType searchType,            @RequestParam(required = false)String searchValue,            @PageableDefault(size=10,sort="createdAt",direction = Sort.Direction.DE..

프로젝트 2023.03.19

27일차

오늘은 Part 2. 게시판 서비스 강의의 `게시판 페이지 기능 구현 1`부분을 학습하였다. 저번 강의까지는 게시판, 게시글, 로그인 페이지 기능 테스트를 정의하면서 뷰의 기능을 정의하였지만 이번 강의에서부터 진짜 뷰의 기능 구현을 시작하기로 한다. ArticleRepository를 다음과 같이 작성해주었다.@RepositoryRestResourcepublic interface ArticleRepository extends        JpaRepository,        QuerydslPredicateExecutor, // 검색기능        QuerydslBinderCustomizer{    Page findByTitleContaining(String title, Pageable pageable)..

프로젝트 2023.03.18

26일차

오늘은 Part 2. 게시판 서비스 강의의 `로그인 페이지 기능 테스트 정의`부분을 학습하였다. 스프링 시큐리티에서 제공하는 모듈을 사용하기로 했기 때문에 로그인 페이지에 대해서 따로 작업해줄 내용은 별로 없었다. 오늘은 강의 외 시간에 업데이트된 내용을 리뷰하는 것으로 강의를 진행하셨다. 게시글과 게시글댓글 서비스 로직 테스트 코드를 업데이트하였는데 업데이트한 내용은 다음과 같다. ArticleServiceTest검색어 없이 게시글을 검색하면, 게시글 페이지를 반환한다.검색어와 함께 게시글을 검색하면, 게시글 페이지를 반환한다.게시글을 조회하면, 게시글을 반환한다.없는 게시글을 조회하면, 예외를 던진다.게시글 정보를 입력하면, 게시글을 생성한다.게시글의 수정 정보를 입력하면, 게시글을 수정한다.없는 게..

프로젝트 2023.03.17

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