스프링 부트 공부를 시작했다.
이전 스프링 관련 내용은 밑에서 참고...
▶ 스프링 개념
▶ 스프링 실습
이번 실습은 인프런 스프링 부트 강의 중 가장 유명한 김영한 선생님의 강의를 토대로 만들었다.
무료고 강의 자체가 짧아 금방 볼 수 있다. 추천 추천!! 😲😲
스프링 부트 회원 기능 실습
JDK는 16, IDE는 IntelliJ에서 진행했다.
강의에서는 11버전을 추천했지만 당장 16버전으로 쏘카 수업을 듣고 있어서..
▶ MS open source JDK 16 설치하기
2021.06.25 - [IT 독학/JAVA] - Microsoft Open JDK 설치 (ms Java openJDK / openJDK SE 16)
1. 웹 프로젝트 생성
이 사이트를 통해 초기 프로젝트를 쉽게 생성할 수 있다.
프로젝트 빌드 툴을 gradle로 설정해주고 스프링 부트 버전을 적당히 골라준다. SNAPSHOT 버전은 아직 개발이 덜 된 버전이라 웬만하면 쓰지 말라고 한다.
+ project build tool
프로젝트 빌드 툴은 필요한 라이브러리를 가져와 제공해주고 빌드라이프사이클을 관리해주는 등 역할을 한다.
java 버전을 자신의 jdk 버전에 맞게 골라주고
라이브러리를 spring web과 thymeleaf 만 골라주고 생성해준다.
이렇게 되면 zip 파일이 다운된다.
압축을 풀고난 후
build.gradle 파일을 인텔리제이로 열어주면 된다.
내가 설정한 대로 잘 되어 있는걸 볼 수 있다.
밑의 책 참고
https://book.naver.com/bookdb/book_detail.nhn?bid=15871738
2. 회원 도메인 & 레포지토리 생성
일단 회원에 대한 것들을 만들어준다.
2-1. Member.java 클래스 생성
src > main > java > hello.hellospring > domain 패키지 생성
src > main > java > hello.hellospring > domain > Member 자바 클래스 생성
멤버 클래스는 간단히 id, name의 멤버변수와 getter&setter을 만들어줬다.
2-2. MemberRepository.java 인터페이스 생성
src > main > java > hello.hellospring > repository 패키지 생성 > MemberRepository.java 인터페이스 생성
레포지토리 인터페이스로 먼저 틀을 생성해줬다.
여기서 Optional이란 id나 name으로 회원을 검색할 시 결과가 없을 수도 있어 감싸준 것이다.
코틀린에서 ?와 같은 역할을 한다.
2-3. MemoryMemberRepository.java 클래스 생성
repository 패키지에 인터페이스를 상속받는 구현 클래스를 만들어줬다.
implements method도 해주면 자동으로 메소드가 생성된다.
3. 레포지토리 메소드 작성
이제 이 구현 레포지토리에 메소드를 작성해준다.
3-1. save( )
회원을 생성해주는 save메소드는 담아줄 sotre hashmap을 선언해준다.
사용자가 회원가입하면 store에 담겨 저장되는 것이다.
또 id는 자동으로 증가하는 sequence로 설정해준다.
id는 setter로 설정해주고
담을때는 put으로 map에 담아줬다.
3-2. findById( ) / findByName( )
getter로 가져와 반환해준다.
회원의 getName이 사용자가 검색한(파라미터로 넘어온) name과 같은지 필터링해준다.
3-3. findAll( )
회원을 모두 출력하는 findAll은 store에 담긴 모든 값들을 arrayList로 가져온다.
4. 서비스 생성
컨트롤러로 넘어온 것들을 레포지토리에 저장하고 호출하는 비즈니스 로직을 만들어준다.
4-1. MemberService.java
서비스는 레포지토리에 만들어둔 구현체와 맞춰 만들어주되,
좀 더 서비스에 가까운 이름으로 메소드를 만들어준다.
레포지토리에서는 회원가입을 save로 했다면 서비스에서는 join으로 해줬다.
4-1-a. 회원가입 Join( )
우리가 회원가입을 하기 전 이 회원이 존재하는지 아닌지 먼저 검증을 먼저 해줬다.
memberRepository에 name으로 검색해 만약 존재하면 "이미 존재하는 회원입니다"라는 예외를 띄워주기로 했다.
이 회원검증 메소드는 원래 회원가입 안에 있었지만
효율적인 코드 관리를 위해 extract method : ctrl + alt + m 를 해줬다.
4-1-b. 회원 전체 출력 findMembers( ) / 회원 id로 검색 findOne( )
회원 검색에 관한 메소드는 간단히 레포지토리에서 만들어준 메소드를 호출해 리턴해준다.
댓글