스프링 핵심 기능 프로젝트 1
프로젝트로 기술 실습 전 !
처음부터 스프링 기반이 아니라 순수한 자바로 개발을 하고 변경하는식의 프로젝트다. 생성할때만 부트 스타터로 프로젝트 생성함
개발 운영체제 : Window 10
프레임워크 : Spring Boot
개발 도구 : IntelliJ IDEA Commnunity Edition 2021.3
개발언어 : Java JDK11 사용
사용 서버 : Apache Tomcat
빌드 : gradle
DB : ORACLE 예정
그 외 : Git
📌 회원 도메인 개발
회원 등급
public enum Grade {
//요구사항대로 두 등급으로 개발한다.
BASIC,
VIP
}
회원 엔티티
public class Member {
private Long id;
private String name;
private Grade grade;
public Member(Long id, String name, Grade grade) {
this.id = id;
this.name = name;
this.grade = grade;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Grade getGrade() {
return grade;
}
public void setGrade(Grade grade) {
this.grade = grade;
}
}
회원 저장소
- 회원 저장소 인터페이스
public interface MemberReposiotry {
void save(Member member);
Member findById();
}
- 메모리 회원 저장소 구현체
// 데이터베이스가 확정되지 않은상태에서의 구현체
public class MemoryMemberRepository implements MemberRepository {
// 동시성 문제 발생시 -> ConcurrentHashMap 사용
private static Map<Long, Member> store = new Map<Long, Member>();
@Override
public void save(Member member) {
store.put(member.getId(), member);
}
@Override
public Member findById() {
return store.get(memberId);
}
}
회원 서비스 인터페이스
public interface MemberService {
void join(Member member);
Member findMember(Long memberId);
}
회원 서비스 구현체
public class MemberServiceImpl implements MemberService {
private final MemberRepository memberRepository = new
MemoryMemberRepository();
@Override
public void join(Member member) {
memberRepository.save(member);
}
@Override
public Member findMember(Long memberId) {
return memberRepository.findById(memberId);
}
}
회원 도메인 - 회원가입 main
public class MemberApp {
public static void main(String[] args) {
MemberServcie memberServcie = new MemberService();
Member member = new Member(1L, "아리아나그란데", Grade.VIP);
memberService.join(member);
Member findMember = memberServcie.findeById(member.getName());
System.out.println("new Member = " + member.getName());
System.out.println("find Member = " + findMember.getName());
}
}
설명 및 배운것
- 현재 위 자바코드로 구현되어있는 로직은 스프링이 사용되지않은 순수 자바코드다.
- 의존관계가 인터페이스 뿐만 아니라 구현까지 모두 의존하는 문제점이 있다 추후에 고쳐가면서 공부를 할것이다!
# 👉 참조 : 인프런의 김영한님 강의 , [남궁성님의 자바의정석] , 위키백과
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
개인메모_