본문 바로가기

전체 글

(108)
[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..
[22일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) H2 console에 접속하는 방법 ① application.yaml : spring > datasource 부분을 h2로 설정한다. url: jdbc:h2:mem:testdb username: sa driver-class-name: org.h2.Driver​ ② 애플리케이션 서버를 실행한다. 로그에 H2Dialect가 출력되는지 확인한다. ③ 웹 브라우저에 localhost:8080/h2-console를 입력한 후 Connect 버튼을 선택한다. localhost:8080/h2-console 테이블을 조회(SELECT)하는 방법 : 테이블을 선택하면 console에 조회(SELECT)문이 입력된다. 테이블에 저장된 데이터를 확인하는 방법 : 조회(SELECT)문이 입력된 상태에서 Run 버튼을 선택한다..
[21일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 엔티티 정의 ① Annotation을 설정한다. ② 기본 생성자를 생성한다. Lombok으로 생성하는 방법 : @NoArgsConstructor(access = AccessLevel.PROTECTED) ③ 설정이 필요한 필드를 갖는 생성자(private)를 생성한다. 생성자는 private 제어자로 숨기고, 값을 넣을 때는 factory method를 이용한다. ④ 동등성/동일성 검사를 위한 equals() ans hashCode()를 생성한다. ⑤ 서비스(애플리케이션 코드)를 구동한다. Services(구 Spring DashBoard) > Add Service > Run Configuration Type > Spring Boot > Run Services를 이용하여 서비스를 구동하면 서비스 실행 로그..