본문 바로가기

[ Development ]23

[Spring 스프링] 5. 회원 관리 예제 - 웹 MVC 개발 // 홈 컨트롤러 추가 package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } //회원 관리용 홈 Hello Spring 회원 기능 회원 가입 회원 목록 // 회원 등록 폼 컨트롤러 @Controller public class MemberController { private final MemberService memberS.. 2023. 10. 10.
[Spring 스프링] 4. 스프링 빈과 의존관계 멤버 컨트롤러는 멤버 서비스를 통해서 행동하므로 멤버 컨트롤러는 멤버 서비스에 의존 관계가 있다 스프링 빈을 등록하는 2가지 방법 - 컴포넌트 스캔과 자동 의존관계 설정 - 자바 코드로 직접 스프링 빈 등록하기 컴포넌트 스캔 원리 - @Component 애노테이션이 있으면 스프링 빈으로 자동 등록 - @Controller 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트 스캔 @Component 를 포함하는 다음 애노테이션도 스프링 빈으로 자동 등록 - @Controller - @Service - @Repository 생성자에 @Autowired 를 사용하면 객체 생성 시점에 스프링 컨테이너에서 해당 스프링 빈을 찾아서 주입 생성자가 1개만 있으면 @Autowired 는 생략할 수 있음 스프링은 스프.. 2023. 10. 10.
[Spring 스프링] 3. 회원 관리 예제 4 - 회원 서비스 개발 및 테스트 회원 서비스는 회원 리포지토리와 도메인을 활용해 실제 비즈니스 로직 만드는 것 회원 리포지토리 생성 package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import java.util.List; import java.util.Optional; public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); /** * 회원가입 */ public Long join(Member member) { valida.. 2023. 10. 3.
[Spring 스프링] 3. 회원 관리 예제 3 - 회원 리포지토리 테스트 케이스 작성 회원 리포지토리가 내가 원하는대로 정상 작동하는지 코드를 코드로 검증하는 방법 개발한 기능을 실행해서 테스트 할 때 자바의 main 메서드를 통해서 실행하거나 웹 애플리케이션의 컨트롤러를 통해서 해당 기능을 실행한다 이러한 방법은 준비하고 실행하는데 오래 걸리고 반복 실행하기 어렵고 여러 테스트를 한번에 실행하기 어렵다는 단점이 있다 자바는 JUnit이라는 프레임워크로 테스트 코드 자체를 실행해서 이러한 문제를 해결한다 test / java / repository (새 package 생성) / MemoryMemberRepositoryTest.class 생성 굳이 public일 필요는 없음 package hello.hellospring.repository; import hello.hellospring.do.. 2023. 10. 3.
[Spring 스프링] 3. 회원 관리 예제 2 - 회원 도메인과 리포지토리 만들기 1. 회원 객체 생성 package hello.hellospring.domain; public class Member { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } getter setter 모두 만든다 2. 회원 리포지토리 회원 저장하는 저장소 package hello.hellospring.repository; import hello.hellospring.domain.. 2023. 10. 3.
[Spring 스프링] 3. 회원 관리 예제 1 - 비즈니스 요구사항 정리 * 비즈니스 요구사항 정리 데이터: 회원ID, 이름 기능: 회원 등록, 조회 * 일반 웹 애플리케이션 계층 구조 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 핵심 비즈니스 로직 구현 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 * 클래스 구현 관계 아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계 데이터 저장소는 RDB, NoSQL 등등 다양한 저장소를 고민중인 상황으로 가정 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용 -> 변경 가능하므로 2023. 10. 3.