728x90 반응형 전체 글202 [회원 관리 예제 - 백엔드 개발] 회원 서비스 테스트 회원 서비스 테스트 MemberService에 커서를 위치 시킨 후, ctrl + shift + T > Create New Test... > 3가지 메소드 선택 후 OK 클릭 > MemberServiceTest 생성 1. 회원가입 테스트 MemberService memberService = new MemberService(); @Test void 회원가입() { // given Member member = new Member(); member.setName("hello"); // when Long saveId = memberService.join(member); // then Member findMember = memberService.findOne(saveId).get(); assertThat(memb.. 2022. 1. 14. [회원 관리 예제 - 백엔드 개발] 회원 서비스 개발 회원 서비스 개발 public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); /** * 회원 가입 */ public Long join(Member member) { // 같은 이름이 있는 중복 회원X Optional result = memberRepository.findByName(member.getName()); result.ifPresent(m -> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); memberRepository.save(member); return member.getId(); } } Optional.. 2022. 1. 13. [회원 관리 예제 - 백엔드 개발] 회원 리포지토리 테스트 케이스 작성 회원 리포지토리 테스트 케이스 작성 회원 리포지토리 메모리 구현체 테스트 1. save() 테스트 MemberRepository repository = new MemoryMemberRepository(); @Test public void save() { Member member = new Member(); member.setName("spring"); repository.save(member); Member result = repository.findById(member.getId()).get(); // Assertions.assertEquals(member, null); // System.out.println("result = " + (result == member)); Assertions.assert.. 2022. 1. 12. [회원 관리 예제 - 백엔드 개발] 회원 도메인과 리포지토리 만들기 회원 도메인과 리포지토리 만들기 회원 객체 public class Member { private Long id; // 시스템이 정해주는 값(sequence) private String name; 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 interface MemberRepository { Member save(Member member); Optional findById(Long id); // n.. 2022. 1. 11. [회원 관리 예제 - 백엔드 개발] 비즈니스 요구사항 정리 비즈니스 요구사항 정리 데이터: 회원ID, 이름 기능: 회원 등록, 조회 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 컨트롤러 웹 MVC의 컨트롤러 역할 서비스 핵심 비즈니스 로직 구현 리포지토리 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계 데이터 저장소는 RDB, NoSQL 등등 다양한 저장소를 고민중인 상황으로 가정 개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용 2022. 1. 11. [스프링 웹 개발 기초] API API // HelloController.java @GetMapping("hello-string") @ResponseBody // http body 부분에 데이터를 직접 넣겠다. public String helloString(@RequestParam("name") String name) { return "hello " + name; } 결과 페이지 소스 보기 // HelloController.java @GetMapping("hello-api") @ResponseBody public Hello helloApi(@RequestParam("name") String name) { Hello hello = new Hello(); hello.setName(name); return hello; // 객체를 반환하면 .. 2022. 1. 10. [스프링 웹 개발 기초] MVC와 템플릿 엔진 MVC와 템플릿 엔진 view : 화면을 그리는데 모든 역량을 집중 Controller : 비즈니스 로직, 내분 처리에 집중 resource > templates > hello-template.html 생성 hello! empty // HelloController.java @GetMapping("hello-mvc") // @RequestParam : 외부에서 파라미터를 받을거다 public String helloMvc(@RequestParam("name") String name, Model model) { model.addAttribute("name", name); return "hello-template"; } 결과 로그를 확인 하면 아래와 같은 WARN을 발견할 수 있다. WARN 27040 --- .. 2022. 1. 9. [스프링 웹 개발 기초] 정적 컨텐츠 정적 컨텐츠 스프링 부튼 정적 컨테츠 기능 https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-bootfeatures.html#boot-features-spring-mvc-static-content 7.1.5. Static Content By default, Spring Boot serves static content from a directory called /static (or /public or /resources or /META-INF/resources) in the classpath or from the root of the ServletContext. It uses the ResourceHttpRequestHa.. 2022. 1. 8. 이전 1 ··· 19 20 21 22 23 24 25 26 다음 728x90 반응형