일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- spring
- C
- 플러터
- Java
- php 프로그래밍 입문 연습문제
- 스프링
- 파이썬
- php 프로그래밍 입문
- php 프로그래밍 입문 예제
- php 프로그래밍 입문 3판
- Flutter
- programmers
- 자바 스프링
- 최단 경로
- 한정 분기
- 플러터 개발환경 설정
- 페이코 추천인코드
- php 프로그래밍 입문 문제풀이
- php 프로그래밍 입문 솔루션
- 자바
- 배열
- 페이코 추천인
- SWEA
- php 프로그래밍
- php
- C언어
- 백준
- JAVA SPRING
- 페이코 초대코드
- 페이코 친구코드
Archives
- Today
- Total
11-07 11:40
ImJay
[Java Spring] 1-11. 회원 서비스 개발 본문
반응형
[Java Spring] 1-11. 회원 서비스 개발
1. 회원 리포지토리와 도메인을 활용해서 비즈니스 로직인 회원 서비스 클래스를 개발해보자.
2. src > main > java > hello.hellospring > 새로 만들기 > 패키지
3. service 패키지 생성
4. service 패키지 내에 MemberService 클래스 생성
5. 코드 작성
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();
/**
* 회원 가입
*/
public Long join(Member member) {
// 같은 이름이 있는 중복회원X
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
memberRepository.save(member);
return member.getId();
}
}
- memberRepository.findByName 의 반환형은 Optional 이다. 그러나 Optional 을 객체로 생성하는 것은 권장되지 않기 때문에, 직접 메소드를 호출해주었다.
- ifPresent 는 findByName의 반환이 Null 이 아닌 값으로 존재한다면, 다음의 명령을 수행한다. 기존에 Optional 자료형이 존재하지 않을 때는 Null 값이 존재하는지로 판별하였다. 그러나 값을 직접 참조하는 것은 적절하지 못하다. ifPresent 메소드는 Optional 이기 때문에 사용이 가능한 메소드이다.
6. 간단하게 메소드로 뽑아내는 방법
위처럼 복잡한 로직은 메소드로 뽑아내는 것이 적절하다.
6-1. 드래그 후 Ctrl + Alt + Shift + T 를 누른다. (앞으로 매우 자주 사용하니 꼭 숙지)
6-2. 메서드 추출을 클릭한다.
6-3. 메서드 이름을 validateDuplicateMember 로 설정한다.
7. 코드 추가 작성
/**
* 전체 회원 조회
*/
public List<Member> findMembers() {
return memberRepository.findAll();
}
public Optional<Member> findOne(Long memberId) {
return memberRepository.findById(memberId);
}
- 서비스 클래스는 비즈니스에 가까운 용어(네이밍)를 사용해야한다.
반응형
'Java Spring > 스프링 입문' 카테고리의 다른 글
[Java Spring] 1-13. 컴포넌트 스캔과 자동 의존관계 설정 (0) | 2023.01.30 |
---|---|
[Java Spring] 1-12. 회원 서비스 테스트 (1) | 2023.01.30 |
[Java Spring] 1-10. 회원 리포지토리 테스트 케이스 작성 (0) | 2023.01.30 |
[Java Spring] 1-9. 회원 도메인과 리포지토리 만들기 (2) | 2023.01.30 |
[Java Spring] 1-8. 비즈니스 요구사항 정리 (2) | 2023.01.30 |
Comments