본문 바로가기

개발일지

(43)
[Spring] 스프링 입문 - 회원 관리 예제, 웹 MVC 개발 회원 웹 기능 - 홈 화면 추가 1. HomeController 생성 package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } 2. home.html 생성 Hello Spring 회원 기능 회원 가입 회원 목록 localhost:8080에서 위와 같은 웹 페이지가 만들어 진다 회원 웹 기능 - 등록 1. MemberControl..
[Spring] 스프링 입문 - 스프링 빈과 의존 관계 회원 컨트롤러가 회원 서비스, 리포지토리를 사용할 수 있게 의존관계를 준비한다 Controller 어노테이션 스프링 컨테이너가 창에 뜨면, 스프링 컨테이너 라는 통이 생긴다 Controller 어노테이션이 있으면 MemberController 객체를 생겨서 통에 넣어두고, 스프링이 관리한다 new 방식으로 객체를 생성하지 말고, 컨테이너에 하나만 등록해서 그 등록한 것을 사용하자! Autowired 스프링 컨테이너에서 memberService를 가져오는데, 생성자에 접근 순수한 자바 코드였던 MemberService에 Service라는 어노테이션을 초기에 선언 → 스프링이 Service라는 어노테이션을 보고, 스프링 컨테이너에 MemberService를 등록 Controller, Repository도 마..
[Server] TCP와 UDP TCP; Transmission Control Protocol 연결지향형 프로토콜, 즉 송신자와 수신자가 양방향 소통을 한다 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜로, 신뢰성이 요구되는 애플리케이션에서 사용한다 안정적이고, 혼잡 제어와 흐름 제어가 가능하다! 하지만 데이터 전송 순서가 보장되면서 상대적으로 느리다..라는 것 연결형 서비스 byte 스트림으로 연결한다 흐름 / 혼잡 제어 O 신뢰성 GOOD 전이중 방식 (Full-Duplex) : 양방향 동시 전송 가능 점대점 (Point to Point) : 1대1, 2개의 종단점 TCP Header Source Port, Destination Port : 송/수신자의 포트 번호 주소 Sequence Number : 시퀀스 번호 - ..
[Spring] 스프링 입문 - 회원 서비스 테스트 [단축키] 테스트 생성 command + shift + T 💡 테스트는 한글로 적어도 괜찮다! 실제 코드에 포함되지 않기 때문에 given, when, then 문법 given : 어떤 것이 주어졌을 때 when : 이 코드를 실행 했을 때 then : 결과는 이것이 나와야 한다 회원가입 테스트 코드 작성 class MemberServiceTest { MemberService memberService = new MemberService(); @Test void 회원가입() { // given Member member = new Member(); member.setName("hello"); // when Long saveId = memberService.join(member); // then Member ..
[Spring] 스프링 입문 - 회원 서비스 개발 회원 서비스 개발 : 회원 리포지토리와 도메인을 활용하여 실제 비즈니스 로직을 작성 1. MemberService 클래스 생성 💡 service 패키지를 새로 만들어서, 그 안에 생성합니다 [단축키] Command + Option + V : return 형식으로 변수 추출 2. 회원가입 메서드 생성 public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); /** * 회원 가입 */ public Long join(Member member) { // 같은 이름이 있는 중복 회원은 안되는 조건 Optional result = memberRepository.findByName..
[Spring] 스프링 입문 - 회원 리포지토리 테스트 케이스 테스트 케이스 만들기 : 내가 원하는 대로 작동하는지 검증하기 위해 테스트 케이스를 만든다 ! class MemoryMemberRepositoryTest { MemoryMemberRepository 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, result); } } hello.hellospring.repository 패키지..
[Spring] 스프링 입문 - 회원 도메인과 리포지토리 만들기 비즈니스 요구사항 정리 데이터 : 회원ID, 이름 기능 : 회원 등록, 조회 아직 데이터 저장소가 선정되지 않았다는 가상의 시나리오 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 핵심 비즈니스 로직 구현 ex) 중복 가입 안됨 등 리포지토리 : DB에 접근하여, 도메인 객체를 저장하고 관리한다 도메인 : 회원, 주문, 쿠폰처럼 DB에 저장되고 관리되는 비즈니스 도메인 객체 아직 데이터 저장소가 선정되지 않았음 → 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계 개발 진행을 위해 일단 가벼운 메모리 기반의 데이터 저장소를 사용한다 회원 도메인과 리포지토리 만들기 1. Member Class 생성 domain이라는 패키지를 새로 생성하고, Member Class를 생성한다 package hello..
[Spring] 스프링 입문 - 정적 컨텐츠, MVC, API 정적 컨텐츠 static 폴더 안에 있는 파일을 그대로 고객에게 전달한다 이런식 static 파일 안에서 프로그래밍을 직접 하진 않고 요즘은 보통 MVC 패턴으로 코딩하는 추세 웹 브라우저에서 해당 html 주소를 요청 톰켓 서버는 스프링 컨테이너에 관련 컨트롤러가 있는지를 우선적으로 탐색한다 스프링 컨테이너에 해당 매핑이 없음 스프링 컨테이너에서 관련 컨트롤러가 없으면 그 때 resources/static 폴더에서 해당 파일이 있으면 그 파일을 반환한다 MVC(Model, View, Controller) 관심사 분리 ! View는 화면을 그리는 데에 모든 영향을 집중한다 Controller에서는 비즈니스 로직, 내부 로직 처리에 집중해야 하므로 관심사를 분리 Model에 관련 된 로직을 화면에 넘겨주는..