스프링 프로젝트 시작하기

Spring Initializr

다운 받은 후 원하는 곳에 디랙토리 압축을 푼다

InteliJ로 build.gradle을 [프로젝트 열기] 한다.

기능과 구현의 분리 (의존성 주입 Dependency Injection)

기능을 어떻게 구현할 건지?!!

관원 서비스

저장, 조회 → 이를 엑셀로 저장, DB로 자장 변동가능

생활관 서비스

생활관 배정 → 시기 상황에 따라서 변동 가능

이러한 변동사항을 어떻게 유지 보수 할 것인가?

public interface MemberService {
    void register(Member member);
    Member findMember(Member member);
}
public class MemberServiceImpl implements MemberService {
    /* FileMemberStorage가 아닌 interface를 가져오는게 국룰 */
    // private final MemberStorage memberStorage = new DbMemberStorage();
    // private final MemberStorage memberStorage = new FileMemberStorage();

    /* 
			코드 수정 사항이 불가피한 단점이 존재(OCP 준수 X) => AppConfig로 해결(의존성 주입)
		*/
    private MemberStorage memberStorage;

    public MemberServiceImpl(FileMemberStorage fileMemberStorage) {
        this.memberStorage = fileMemberStorage;
    }

    @Override
    public void register(Member member) {
        memberStorage.store(member);
    }
    @Override
    public Member findMember(Member member) {
        return memberStorage.findById(member.getId());
    }
}