본문 바로가기

프로젝트/selfmade Blog - V29

5-4. 회원 기능 통합 테스트 MockMVC Controller에 HTTP 요청을 만들어 전송하기 위해서 MockMVC를 사용해 주었다. 테스트 클래스에 다음의 두 어노테이션을 추가해 준다. @SpringBootTest @AutoConfigureMockMvc @AutoConfigMockMVC는 객체를 JSON타입으로, JSON 타입을 객체로 변환해 주기 위한 ObjectMapper와 임의의 HTTP 요청을 만들어 줄 MockMVC를 사용하기 위해 추가한다. 통합 테스트를 진행하기 위해 각각의 스프링 빈은 의존관계 주입이 진행되어야 하기에 @SpringBootTest를 사용해 주었다. 만약 @SpringBootTest를 사용하지 않으면 @Autowired를 사용해 UserController 객체를 가지고 오더라도 해당 객체 내부에 존재.. 2023. 9. 28.
5-3. 회원 기본 기능 구현 (Controller) 이제 웹 페이지에서 회원 기능을 사용할 수 있도록 Controller를 만들어 API를 제공하고, 뷰를 제공해 보자. Model 생성 Controller 계층에서 사용할 모델을 추가해 준다. Service 계층에서 사용할 모델과 크게 다르지 않다. @Getter @Setter @NoArgsConstructor @AllArgsConstructor public class WebUser { private String userName; private String id; private String password; } 이번에도 마찬가지로 Model 변환 클래스를 따로 하나 만들어 사용하자. public class WebUserMapper { public static ServiceUser getServiceUser.. 2023. 9. 28.
5-2. 회원 기능 구현 (Service) 이제, 핵심 비즈니스 로직에 해당하는 UserService를 구현해 보자. 필요한 기능과 고려해야 할 예외사항은 다음과 같이 예상했다. UserService 먼저, UserService를 생성해 준다. UserService는 UserDAO가 제공하는 메서드를 호출해야 하기 때문에 UserDAO 에게 의존성을 가지고 있어야 한다. @Autowired를 사용해 의존성을 추가해준다. //... @Autowired UserDAO userDAO //... Model 이전에 자형에게 프로젝트 구조를 설명 들을 때 각 계층마다 모델을 따로 두는 것이 일반적이라고 설명을 들었다. 미처 그 이유까지 설명을 듣지는 못했으나, 그대로 구현을 해 보며 어떤 이점이 있는지를 찾아보고자 한다. 각 계층마다 모두 다른 모델을 사용.. 2023. 9. 24.
5-1. 회원 기본 기능 구현 (Repository) 가장 먼저 회원 정보를 DB에 저장해 두고, 회원 정보를 생성/조회/수정/삭제 하는 기능을 구현해 보자. API 구성 대략적인 API 구성은 다음과 같이 계획했다. 회원 생성 기능은 입력 폼으로 데이터를 입력 받아서 Model로 전달 해 줄 것이기 때문에 path variable은 필요하지 않다. 회원 데이터는 일단 간단하게 이름과 아이디, 비밀번호 정도만 만들어 두자. Repository Model 가장 먼저, 앞으로 우리가 사용하게 될 유저 클래스를 만들어 주자. @Entity @Table(name = "USERS") @Getter @Setter @NoArgsConstructor public class User { @Id @GeneratedValue @Column(name = "IDX") privat.. 2023. 9. 22.