준비
이전 게시물인 스프링 환경 구성을 참고하여 준비를 마칩니다.
예제 코드
회원
- 간단한 회원 가입 및 조희, 삭제기능이 있고 회원 관련 저장소는 언제든지 원하는 객체를 주입시킬 수 있어야 합니다.
- 아래의 사진과 같이 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 |