본문 바로가기

ALL

회원 서비스 테스트 1. 코드분석 package hello.hellospring.domain; import hello.hellospring.repository.MemoryMemberRepository; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; class MemberServiceTest { // test 할 membe.. 더보기
회원서비스(비즈니스 로직) 만들기 1. 코드분석 public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); //회원가입 public long join (Member member) { //같은 이름이 있는 중복 회원 발생 시 오류 메세지 보냄 -> 중복 없으면 다음 단계 순차 실행 vaildateDuplicateMember(member); memberRepository.save(member); return member.getId(); } private void vaildateDuplicateMember(Member member) { //Member type의 변수 member가 인수로 들어옴. member.. 더보기
Api Test build 코드 분석 class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); @AfterEach // 각 함수 끝날 때 마다 실행하라 public void afterEach() { repository.clearStore(); // repository 패키지에 있는 clearStore 매소드 이용해라 // clearStore()는 Store 내의 key-value 쌍들을 지우는 매소드 } @Test public void save() { Member member = new Member(); member.setName("spring"); repository.save(member); Member result .. 더보기
회원 도메인과 레포지토리 만들기 1. Member Class //Member class 만들기 package hello.hellospring.domain; public class Member { private Long id; private String name; public Long getId()//ID 조회 { return id; } public void setId(Long id) //id 설정(인수로 들어온 실수가 해당 객체의 id) { this.id = id; } public String getName()//Name 조회 { return name; } public String setName(String name)//Name 설정(인수로 들어온 String이 해당 객체의 name ) { this.name = name; } } // .. 더보기
Web 애플리케이션 계층 구조 1. 컨트롤러: 클라이언트의 요청을 어떻게 처리할지 정의되어 있는 곳. 2. 서비스: 비즈니스 로직이 구현되어 있는 곳 (ex- ID 중복은 불가 하도록, 하루 300만원 이상 이체는 불가능 하도록) DB영역과 도메인 영역 연결해주는 매개체 역할 3. Repository: Domain 영역에서 받아온 객체들을 DB에 저장하고 관리 (Domain에 대한 CRUD 역할) 4. Domain: DB 테이블과 1대1 대응(mapping)되는 객체 (getter-조회, setter-설정 메소드를 가진다.) 외운 거 확인 그림 보고 각 개체들 설명 더보기
Spring 웹 개발 기초 - API 1. api 란? 한 소프트웨어에서 다른 소프트웨어로 요청을 보내거나 받을 수 있는 수단. 2. 코드분석 (1) @ResponseBody에 대한 설명 @GetMapping("hello-string") @ResponseBody //컨트롤러가 반환 값을 http body부에 직접 넣어주겠다. public String helloString(@RequestParam("name") String name) { return "hello " + name; /* para에 spring을 넣으면 hello spring이 될 것임. 여기선 view이런 걸로 그에 맞는 template 찾아 값 넣는 과정 없이 데이터가 그대로 웹 브라우저에 들어감. 데이터 원본 보기를 해도 코드가 안 뜨고 우리가 넣은 스트링이 그대로 뜸. *.. 더보기
Spring Web 개발 기초 - MVC 작동원리 1.MVC란? -model view controller Controller는 원래 view의 일부였는데, 너무 내용이 복잡해서 둘로 쪼갰다. view == 화면을 그리는 데 집중하는 part model, Controller == 비즈니스 로직이나 요청 내용 처리에 집중하는 part 2. 코드 분석 @Controller public class HelloController { @GetMapping("hello") public String hello(Model model){ model.addAttribute("data","hello!!"); return "hello"; } // hello-mvc 조회(GET)에 대비한 mapping을 추가 @GetMapping("hello-mvc") public String .. 더보기
Spring Web 개발 기초 - 정적 컨텐츠 작동원리 1.정적 컨텐츠란? 파일,html에 적힌 내용을 그대로 웹에 반환 하는 것. //resource의 static에 hello-static.html이라는 파일을 만든다. 밑은 해당 파일의 내용 정적 컨텐츠 입니다. 2. 작동원리 1) 웹 브라우저가 localhost8080/hello_static.html GET(조회) 요청 2) 내장 웹 서버인 tomcat이 해당 요청 받아서 springboot에 전달 3) 스프링부트는 해당 내용과 대응(mapping 되는)하는 컨트롤러가 있는지 살펴봄. 4) 없으면 resource/static에 들어가 해당 hello_static.html이라는 파일이 있나 살펴봄 5) 있다는 걸 확인 그대로 웹에 반환 (따로 변환 과정을 거치지 않는다.) 3. 외운 거 확인 정적컨텐츠의 .. 더보기