본문 바로가기

Spring

[Spring] 간단한 서비스 생성 및 테스트


준비


이전 게시물인 스프링 환경 구성을 참고하여 준비를 마칩니다.

 

 

예제 코드 


회원

  • 간단한 회원 가입 및 조희, 삭제기능이 있고 회원 관련 저장소는 언제든지 원하는 객체를 주입시킬 수 있어야 합니다.
  • 아래의 사진과 같이 sample_Project에 member 패키지를 생성합니다.

 

 

  • member 패키지에 Member.java 클래스를 생성합니다.
package developingman.sample_Project.member;

public class Member {
    private Long memberId; 
    private String email;
    private String name;
    private String phone;
    
    //생성자
    public Member(Long memberId, String email, String name, String phone) {
        this.memberId = memberId;
        this.email = email;
        this.name = name;
        this.phone = phone;
    }

    public Long getMemberId() {
        return memberId;
    }

    public String getEmail() {
        return email;
    }

    public String getName() {
        return name;
    }

    public String getPhone() {
        return phone;
    }

    public void setMemberId(Long memberId) {
        this.memberId = memberId;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
}

 

 

  • Member 패키지에 MemberRepository.java 클래스를 생성합니다.
package developingman.sample_Project.member;

import java.util.HashMap;
import java.util.Map;

public class MemberRepository {
    private static Map<Long, Member> members = new HashMap<>();
    
    public void postMember(Member member) {
        members.put(member.getMemberId(), member);
    }
    
    public Member getMember(Long memberId) {
        return members.get(memberId);
    }
    
    public void deleteMember(Long memberId){
        members.remove(memberId);
    }
}

 

  • Member 패키지에 MemberService.java 클래스를 생성합니다
package developingman.sample_Project.member;

public class MemberService {
    private final MemberRepository memberRepository = new MemberRepository();
    
    public void createMember(Member member){
        memberRepository.postMember(member);
    }
    
    public Member getMember(Long memberId){
        return memberRepository.getMember(memberId);
    }
    
    public void deleteMember(Long memberId){
        memberRepository.deleteMember(memberId);
    }
}

 

 

회원 로직 테스트 구현

  • Member 패키지에 MemberTest.java 클래스를 만듭니다.
package developingman.sample_Project.member;

public class MemeberTest {
    public static void main(String[] args){
        MemberService memberService = new MemberService();

        Member member = new Member(0L, "leenom@korean.com","LeeNom" , "010-1234-1234");
        memberService.createMember(member);

        Member currentMember = memberService.getMember(0L);

        System.out.println("회원 가입한 유저 : " + member.getName());
        System.out.println("현재 첫번째 유저 : " + currentMember.getName());

        if(member.getName().equals(currentMember.getName())) {
            System.out.println("새롭게 가입한 유저와 현재 유저가 같습니다.");
        }

        memberService.deleteMember(0L);

        if(memberService.getMember(0L) == null){
            System.out.println("회원 삭제가 정상적으로 완료 되었습니다.");
        }
    }
}

 

  • 현재 구조

 

 

테스트

마지막으로 작성한 MemberTest를 실행합니다.

 

 

출력 결과는 위 사진과 같습니다.

 

상품

  • sample_Project 패키지에 snack 패키지를 생성합니다.
  • snack 패키지에 Snack.java를 클래스로 생성합니다.

 

package developingman.sample_Project.snack;

public class Snack {
    private long snackId;
    private String korName;
    private String engName;
    private int price;

    public Snack(long snackId, String korName, String engName, int price) {
        this.snackId = snackId;
        this.korName = korName;
        this.engName = engName;
        this.price = price;
    }

    public long getSnackId() {
        return snackId;
    }

    public String getKorName() {
        return korName;
    }

    public String getEngName() {
        return engName;
    }

    public int getPrice() {
        return price;
    }

    public void setSnackId(long snackId) {
        this.snackId = snackId;
    }

    public void setKorName(String korName) {
        this.korName = korName;
    }

    public void setEngName(String engName) {
        this.engName = engName;
    }

    public void setPrice(int price) {
        this.price = price;
    }
}

 

  • snack 패키지에 SnackRepository 클래스를 생성합니다.
package developingman.sample_Project.snack;

import java.util.HashMap;
import java.util.Map;

public class SnackRepository {
    private static Map<Long, Snack> snacks = new HashMap<>();
    
    public void postSnack(Snack snack){
        snacks.put(snack.getSnackId(),snack);
    }
    
    public Snack patchSnack(Long snackId, String korName, int price){
        Snack snack = snacks.get(snackId);
        snack.setKorName(korName);
        snack.setPrice(price);
        return snacks.put(snackId, snack);
    }
    
    public Snack getSnack(Long snackId){
        return snacks.get(snackId);
    }
    
    public void deleteSnack(Long snackId){
        snacks.remove(snackId);
    }
}

 

  • snack 패키지에 snackService 클래스를 생성합니다.
package developingman.sample_Project.snack;

public class SnackService {
    private static SnackRepository snackRepository = new SnackRepository();
    
    public void createSnack(Snack snack){
        snackRepository.postSnack(snack);
    }
    
    public Snack editSnack(Long snackId, String korName, int price){
        return snackRepository.patchSnack(snackId, korName, price);
    }
    
    public Snack getSnack(Long snackId){
        return snackRepository.getSnack(snackId);
    }
    public void deleteSnack(Long snackId){
        snackRepository.deleteSnack(snackId);
    }
}

 

구조

 

 

 

테스트 작성과 실행

snack에 SnackTest 클래스를 생성합니다.

 

package developingman.sample_Project.snack;

public class SnackTest {
    public static void main(String[] args) {
        SnackService snackService = new SnackService();
        
        Snack snack = new Snack(0L, "인디언밥", "indian meal", 1500);
        snackService.createSnack(snack);
        
        if(snackService.getSnack(0L).getKorName().equals(snack.getKorName())){
            System.out.println(snack.getKorName() + "가 등록되었습니다.");
        }
        
        snackService.editSnack(0L, "인디언 밥", 3000);
        
        if(snackService.getSnack(0L).getPrice() == 3000){
            System.out.println(snack.getKorName()+ "의 금액이 정상적으로 변경 되었습니다.");
        }
        
        snackService.deleteSnack(0L);
        
        if(snackService.getSnack(0L) == null){
            System.out.println("정상적으로 삭제 되었습니다.");
        }
    }
}

 

  • 작성한 snackTest를 실행합니다.
  • 실행 후 결과를 확인할 수 있습니다.

 

 

 

 

'Spring' 카테고리의 다른 글

[Spring] 스프링 컨테이너(Spring Container)  (0) 2023.04.03
[Spring] DI(Dependency Injection)란?  (0) 2023.04.02
[Spring] Spring 환경 구성  (0) 2023.03.31
[Spring] Spring Framework란?(4)  (0) 2023.03.30
[Spring] Spring Framework란?(3)  (0) 2023.03.29