분류 전체보기(219)
-
회원 관리 예제 - 웹 MVC 개발 & 등록 & 조회
아래와 같은 화면이 나오게 된다. * 앞전에 index.html을 만들면서 동일한 URL ( = "/")에서 표출되는 화면을 정의한 적이 있다. 하지만 요청이 오면 스프링 컨테이너의 컨트롤러 안에 관련된 컨트롤러가 있는지 확인한 이후에 templates아래 html 파일이 있는지 찾기 때문에 우선순위는 전자 즉, 위와 같은 화면이 나오게 되는것이다. 등록 MemberController.java의 createFrom메소드를 통해 /members/new와 매핑이 되어 createMemberForm.html로 넘어감 CreateMemberForm.html로 부터 이름(name) 입력 받음 -> action의 url (="members/new")로 host 방식으로 넘어감 2번으로 부터 받은 name 값은 Me..
2022.07.30 -
스프링 빈과 의존관계 - 자바 코드로 직접 스프링 빈 등록하기
MemberService와 MemberRepository를 스프링 컨테이너에 빈으로 올려준다. 컨트롤러는 스프링에서 관리하는 것이기 때문에 컴포넌트 스캔으로 올라간다. 스프링이 뜰때만 주입해주고, 변경 할 방법이 따로 없다. 누군가 MemberController로 호출했을 때, Public으로 열려있어야 한다. 애플리케이션 로딩 시점(조립 = 스프링 컨테이너 올라가고 나머지가 세팅되는 시점)할때 한번 변경이 될 뿐, 한번 세팅이 된 이후에는 memberService를 변경할 일이 없는데, setMemberService가 Pulic하게 노출된다. 따라서 의존관계가 실행 중에 동적으로 변하는 경우는 거의 없기 때문에 생성자 주입을 권장한다. * 실무에서는 주로 정형화된 컨트롤러, 서비스, 리포지토리의 경우 ..
2022.07.30 -
스프링 빈과 의존관계 - 컴포넌트 스캔과 자동 의존관계 설정
화면에 붙이기 위해서는 Controller와 View Templates가 필요하다. 그러기 위해 MemberController가 필요한데, 이는 MemberService를 통해 회원가입하고, 데이터를 조회할 수 있어야한다. 이를 MemberController가 MemberService에 의존한다고 한다. MemberService는 스프링 컨테이너에 딱 한번 등록하고 공용으로 사용하는 것이 좋다. new로 생성하는 경우, 다양한 Controller에서도 호출이 가능해진다. private final MemberService memberService; MemberController를 생성하면 그 아래 생성자를 자동으로 호출하게 되는데, @Autowired가 있으면 컨테이너에 등록된 스프링 빈 memberSer..
2022.07.30 -
회원 관리 예제 - 회원 서비스 테스트
테스트 할 클래스 클릭 후, ctrl+shift+t 하면 아래와 같이 테스트 껍데기를 만들기 위한 생성 창이 뜨게 된다. 회원가입 테스트 **** 테스트는 정상 플로우도 중요하지만 예외 플로우가 훨씬 중요하다. **** 중복회원 예외 테스트 * 전체 서비스 테스트 * 이전 MemoryMemberRepository 에서 clear를 해줬던 것 처럼, 여기서도 두번의 서비스 로직(회원가입 & 중복_회원_예외)을 돌면서 중복 이름이 DB에 쌓여 생기는 에러를 방지하기 위해 clear를 해주어야만한다. static은 인스턴스와 상관없이 클래스에 붙는다. 따라서 MemoryMemberRepository의 store을 각각 new로 새롭게 만들게 되면 서로 다른 repository가 생성된다. 따라서 MemberS..
2022.07.30 -
회원 관리 예제 - 회원 서비스 개발
회원 리포지토리랑 도메인을 활용해서 실제 비즈니스 로직을 작성한다. 특히, 서비스 클래스는 비즈니스에 가까운 용어로 메소드를 만들어야한다. 보통 서비스는 비즈니스에 의존적으로 설계하고, 리포지토리는 개발적으로 용어 선택한다. 간단하게 회원가입 + 중복회원의 경우 회원가입 불가 조건, 회원조회 기능을 서비스화 해볼 예정이다. 회원가입 + 중복회원 조건 추가 Optional로 묶은 회원 정보에서 중복 데이터가 있는지 확인 하는 과정은 아래와 같이 간단하게 메소드로 만들 수 있다. 전체 회원 조회 및 회원 조회
2022.07.30 -
회원 관리 예제 - 회원 리포지토리 테스트케이스 작성
개발한 기능을 실행해서 테스트할 때, 자바의 main 메서드를 통해서 실행하거나 웹 애플리케이션의 컨트롤러를 통해 해당 기능을 실행한다. 그러나 이러한 방법은 준비하고 실행하는데 오래 걸리고, 반복 실행이 어려우며, 여러 테스트를 한번에 하기 어렵다는 단점이 있다. 그래서 자바는 JUnit이라는 프레임워크로 테스트를 실행해서 이러한 문제를 해결한다. 아래의 예제는 save 메소드가 잘 작동하고 있는지를 테스트 해보고 있다. 1. 도메인인 member 객체를 만들고, 사용자로부터 이름을 입력받는다. 2. 저장소에 저장하여, findById로 멤버의 아이디값과 동일한 저장소(repository)의 회원 id를 찾는다. 3. 저장소에 저장된 id가 실제 회원에게 생성된 id와 동일한지 확인해본다. 이어서 fi..
2022.07.27