스프링 부트/스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 20

15. 회원 웹 기능 - 홈 화면 추가

회원 웹 기능 - 홈 화면 추가 홈 컨트롤러 추가 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 회원 기능 회원 가입 회원 목록 localhost:8080 요청 시 출력 페이지 회원 가입을 누르면 /members/new로 이동 회원 목록을 누르면 /members로 이동 하지만..

14. 자바 코드로 직접 스프링 빈 등록하기

수동으로 스프링에 등록하는 방법 MemberService와 MemberRepository의 @Service, @Repository, @Autowired 애노테이션을 제거하고 진행한다. package hello.hellospring; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import hello.hellospring.service.MemberService; import org.springframework.context.annotation.Bean; import org.spr..

13. 컴포넌트 스캔과 자동 의존관계 설정

스프링 빈을 등록하는 방법 @Controller, @Service, @Repository를 사용하는 방법을 컴포넌트 스캔이라고 한다. 이유: @Controller, @Service, @Repository 애노테이션들 속에는 @Component 애노테이션이 등록되어 있기 때문에 스프링이 실행될 때 컴포넌트 관련 애노테이션이 있으면 스프링이 객체를 생성해서 스프링 컨테이너에 모두 등록한다. (@Controller 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트 스캔 때문) 컴포넌트 스캔의 범위 hello.hellospring 패키지의 HelloSpringApplication.java 파일의 내용을 보면 패키지의 이름이 적혀져 있는데, HelloSpringApplication의 메인 메서드가 실행이 될 ..

12. 회원 서비스 테스트

클래스 내에서 Ctrl + Shift + T를 누르면 테스트 코드를 만들 수 있음(맥은 커맨드+쉬프트+T) 아래와 같이 선택 후 OK 클릭 그러면 이렇게 테스트 할 수 있게끔 클래스와 메서드가 자동으로 생성된다. 이를 실행하면 당연히 아무것도 없고 메서드만 있기때문에 테스트가 잘 된다. 이제 여기서 하나씩 채워넣어서 테스트해보자. 테스트 메서드는 과감하게 한글로 작성이 가능하다.(빌드될 때 테스트 코드는 포함되지 않기 때문) given, when, then 세 가지로 주석을 달고 테스트 하면 효율적으로 테스트가 가능 package hello.hellospring.service; import hello.hellospring.domain.Member; import org.assertj.core.api.Ass..

11. 회원 서비스 개발

회원 리포지토리, 도메인을 활용하여 실제 비즈니스 로직을 작성 1. service 패키지, MemberService 클래스 작성 package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import java.util.Optional; public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); /..