개방-폐쇄의 원칙(OCP, Open-Closed Principle)란, 확장에는 열려있고 수정 및 변경에는 닫혀있습니다.무슨 뜻이냐면..이때까지 회원관리 프로젝트를 하면서 데이터베이스가 정해지지 않은 상태에서 개발을 하게 되어서메모리에 회원정보를 저장시켰는데, 이 저장하는 부분을 메모리가 아닌 DB로 변경하겠다는 곳에 있습니다.변경을 하는 과정에서, DI를 이용하여 기존 코드에는 전혀 손대지 않고, 설정만으로 구현 클래스를 변경할 수 있습니다. 기존에 MemberService에서 MemberRepository 인터페이스에구현체가 MemoryMemberRepository가 있었다면, 이건 놔두고구현체를 JDBCMemberRepository를 만들어줘서 스프링 빈으로 사용할 겁니다. 먼저, build.gra..
H2는 자바로 작성된 오픈 소스 내장형 관계형 데이터베이스 관리 시스템입니다.주로 개발 및 테스트 목적으로 사용되며, 인메모리 데이터베이스로도 활용될 수 있습니다.https://www.h2database.com/html/main.html H2 Database EngineH2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size ..
마지막으로 만들어놓은 기능을 사용하여웹에서 데이터를 전달받고, 저장한 데이터를 뿌려주게끔 만들어볼게요.. 우선 제일 처음 보일 Home 페이지 >> HomeController>>package hello.hellospring.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;@Controllerpublic class HomeController { @GetMapping("/") public String home(){ return "home"; }} Home.html >> 회원 기능 회원 가..
이전 게시글에 이어서.. 스프링 컨테이너에MemberController --> MemberService --> MemberRepository요런 비즈니스 로직을 요구할 때 스프링 빈을 등록한 뒤, 첫 번째로 컴포넌트 스캔을 이용해 자동으로 의존관계를 설정해 볼게요.. 우선 Controller를 만든 후.. package hello.hellospring.controller;import hello.hellospring.service.MemberService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;@Controllerpublic class MemberC..
먼저 테스트를 위해 껍데기를 만듭니다.. 회원가입의 경우 @Test void 회원가입() { //given Member member = new Member(); member.setName("member"); //when Long saveId = memberService.join(member); Member findMember = memberService.findOne(saveId).get(); Assertions.assertThat(member.getName()).isEqualTo(findMember.getName()); //then } 생성한 객체와 생성 후 서비스에서 가져온 객체의 I..
회원가입 시 중복된 회원 등을 구분하고 처리하기 위한 서비스 클래스를 만들어볼게요..서비스 클래스에서 메서드는 기계적인 언어보단 개발자가 아닌 다른 사람이 좀 더 알아듣기 쉬운 언어를 사용해서 작성했습니다.. public Long join(Member member) { validateDuplicateMember(member); // 중복 회원 검증 memberRepository.save(member); return member.getId(); } private void validateDuplicateMember(Member member) { memberRepository.findByName(member.getName()) ..