본문 바로가기

Java/[패스트캠퍼스] 50일 포트폴리오 챌린지

(31)
[30일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 게시판 페이징 기능(이전, 숫자, 이후) ① service 패키지에 PaginationService를 생성한다. ② PaginationService : 현재 어느 페이지에 있는지 알아야 함.(현재 페이지 넘버, 전체 페이지 넘버) ③ PaginationService에 대한 테스트를 생성한다. [Ctrl + Shift + T] : 서비스 객체 내에서 테스트 코드를 생성하는 방법 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다. https://bit.ly/43z0P6S 패스트캠퍼스 [직장인 실무교육] 프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공. fastcampus.co.kr #패스트캠퍼스 #포트폴리오 #직장인자기계발..
[29일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 게시글 페이지 기능 구현(상세 화면) 게시글 화면에서 보이는 부분에 대한 데이터 연동을 완료한다. (목업 데이터(X) > DB에 넣어놓은 테스트 데이터(O)) 로그인 페이지 기능은 인증 기능을 구현할 때 구현한다. (컨트롤러 레벨 테스트까지 구현 완료) ① , 에 목업 데이터를 넣는다. ② 실제 데이터를 넣기 위해 각각 태그에 id를 부여한다.(검색, 페이징은 추후) 와 에 id를 부여한다. 닉네임, 이메일, 생성일자, 해시태그를 넣기 위해 내 해당 태그에 각각 id를 부여한다. 본문 영역인 에 id를 부여한다. 댓글 영역(상위)인 에 id를 부여한다. ③ 상세 페이지 thymeleaf template : id를 부여한 각 영역에 thymeleaf 문법을 적용한다. #main(id) : #header(i..
[28일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 게시판 페이지 기능 구현 게시판 컨트롤러 테스트 > 기본적인 입출력 구현 > 서비스 코드에 대한 구현이 되지 않은 상태 > 실제 테스트에 반영한다. > @MockBean : 웹 mvc 테스트에 컨트롤러 단에 의존하는 의존성 게시판 컨트롤러 > 게시판 서비스 객체 사용 > 서비스를 읽어 정보를 전달한다. > @RequiredArgsConstructor : 서비스 객체에 대한 생성자를 만든다.(Constructor Injection) 게시판 컨트롤러 테스트 > 게시판 서비스 객체를 테스트에서 배제. MockMvc가 API의 입출력만 보게 하기 위함. > @MockBean : 연결을 끊기 위해 목킹을 해야 할 때 사용하는 애너테이션 > Spring Test에서 제공하는 애너테이션. 내부 구조는 Mockito의..
[27일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 로그인 뷰 기능 구현 SecurityConfig : 기본 설정을 적용하는 방법 (구) WebSecurityConfigurerAdapter(상속을 이용한 방식) (현) SecurityFilterChain 메서드 구현(컴포넌트 방식) 아직 인증 기능이 구현되지 않았기 때문에 편하게 개발하기 위해 모든 요청에 따른 인증을 열어둔다. Spring Security가 만들어주는 기능을 사용하기 때문에 검증(보장)이 된 기능이다.(테스트할 범위가 아님) 페이지에 method handler가 있는지만 확인하는 형태로 테스트를 진행한다. https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter Spring Secur..
[26일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 게시판 뷰 기능 구현 게시판 페이지에서 구현되어야 하는 기능 목록 useCase 또는 화면(목업 페이지)을 통해 기능을 유추한다. 검색 각 게시글 페이지로 이동 페이지 네이션 홈 버튼(게시판 페이지로 리다이렉션) 정렬 기능 1. Service 패키지를 생성한다. 2. 게시판 서비스 객체를 생성한다. 3. 서비스 객체의 테스트 코드를 작성한다. [Ctrl + Shift + T] : 서비스 객체 코드안에서 테스트 코드를 생성하는 방법 Mockito : SpringBoot의 지원을 받지 않는 가벼운 테스트를 만들 때 사용한다. 테스트 해야 할 대상과 의존 대상을 불러온다. 4. 검색 : "게시글을 검색하면, 게시글 리스트를 반환한다." 게시글 DTO : 목록 조회 메서드 구현 검색할 때 사용하는 파라미터로 검..
[25일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 회원 계정 도메인 ① 기존 ERD(게시글, 댓글)에 회원 계정 도메인 설계를 반영한다. 각 게시글과 댓글이 유저 계정을 인식하게 끔 연관 관계를 설정한다. ② 회원 계정 도메인을 구현한다. ③ 회원 계정 Repository를 생성한다. ④ data.sql : INSERT문을 통해 테스트용 회원 계정 데이터를 DB에 넣는다. ⑤ REST API 테스트 코드 : 회원 정보는 API로 노출하지 않기 위해 모든 http 요청에 대응하는 테스트를 작성한다. 모든 http 메서드에 대해 404 not found가 발생하는지 확인한다. 로그인 페이지(Spring Security) Spring Security가 자동으로 생성하는 로그인 페이지를 이용한다. ① 의존성을 추가한다. start.spring.io > Grad..
[24일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 게시판 페이지 ① resources > templates > {view name 경로} : 디렉토리와 HTML 파일을 생성한다. ② 마크업 개념인 semantic tag를 사용하여 뷰를 작성한다. 의미를 전달하는 태그를 사용함으로써 HTML 문서에 의미를 부여한다. https://www.w3schools.com/html/html5_semantic_elements.asp : 컴포넌트 파일로 작성(다른 페이지에서도 동일한 형태로 표시되어야 하는 반복적인 요소) : : 검색창, : 검색 바(데이터 입력), : 검색 버튼, : 분류 선택 : , , 영역으로 나뉘며, 사용하지 않는 요소는 생략 가능하다. : 분류(제목, 해시태그, 작성자, 작성일), : 목업 데이터 : 이전, 페이지 번호, 다음 : 컴포넌트 파일..
[23일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) QueryDSL을 사용할 수 있는 환경을 구성한다. QueryDSL을 이용하여 API 검색 옵션을 추가한다. QueryDSL 설정 Maven 빌드 도구(업데이트 활발), Gradle 빌드 도구(상대적으로 업데이트 느림) ① 프로젝트에 의존성을 추가한다. ★ 핵심 : querydsl-jpa, querydsl-core, querydsl-collections, querydsl-apt querydsl-collections : QueryDSL에서 제공하는 기능들을 모두 포함시키기 위함. querydsl-apt : 형태가 독특하기 때문에 spring.dependency-management에 의해 관리가 되지 않는다. 버전을 생략할 수 없으므로 버전을 직접 작성해야 한다. // queryDSL 설정 implement..