728x90
반응형

스프링 12

입소 55일차, 대망의 PintOS 프로젝트 시작

벌써 입소 후 55일이 지나 3일 전 목요일부터 PintOS 프로젝트가 시작되었다. 이젠 정글의 일상에 적응할 대로 적응해서 크게 힘들거나 하는 건 없다. 아니 물론 힘들긴 하다. 하지만 못 버틸 정도는 아닌 수준이다. 지난 주 webproxy 주차는 나름 나쁘지 않은 성과였지만, 시간이 너무 부족해 web server만 만들고 메인 과제인 proxy서버를 구현하지 못 해서 아쉬움이 남았다. 구현하지 못 한 게 아니라 접근조차 못 했다. proxy 전 과제인 tiny web server 를 끝낸 후 복습하면서 블로그에 정리 글을 올렸더니 이미 수요일이 끝나 있었다. 이틀.. 아니 딱 하루만 더 있었더라도 proxy서버까지 끝낼 수 있었을 텐데. 아쉬움이 남는다. 그나마 위안이 되는 것은 다른 사람들도 나..

스프링 입문 - 회원 서비스 테스트

회원 서비스 개발에 이어, 개발한 회원 서비스를 테스트할 차례다. 테스트를 수행할 MemberService에서, Ctrl + Shift + T를 누르고, Create New Test를 누른다. 그러면 이런 창이 뜬다. 테스트 클래스 이름도 본래 클래스 이름에 Test만 붙여서 자동으로 작성해 준다. 내가 테스트하고 싶은 메소드를 아래에서 체크해서 OK를 누른다. 그러면 이렇게 테스트에 필요한 틀을, 적절한 위치(경로)에 아주 쉽게 만들어준다. 일단 만들어진 테스트가 문제가 없는지, 현재 상태에서 바로 한번 돌려본다. 다행히 문제는 없다. 본격적으로 테스트 케이스를 작성해 보기 전에, 잠깐 MemberService로 가보자. 기존 코드를 변경해서, 이렇게 생성자를 통해 외부에서 리포지토리를 주입받도록 변경..

Development/Spring 2023.11.07

스프링 입문 - 회원 서비스 개발

도메인, 리포지토리를 만들었으니 서비스를 만들 차례이다. hello.hellospring.service 패키지를 만들고, service 패키지 아래에 MemberService 클래스를 만들자. 서비스는 리포지토리와 함께 동작해야 하니, 미리 만들어두었던 리포지토리 객체를 만들어 주자. 회원가입 메소드인 join이다. member 객체를 매개변수로 받아서 리포지토리에 저장하고, 저장한 객체의 Id를 리턴한다. 단, 중복된 name을 가진 회원은 가입할 수 없도록 검증하는 과정이 있다. 바로 밑에 선언해둔 validateDuplicateMember가 중복을 검사하는 메소드이다. name을 기준으로 리포지토리에서 회원을 찾아서, 해당 회원이 이미 존재한다면 "이미 존재하는 회원입니다" 예외를 출력하고 메소드는..

Development/Spring 2023.11.07

스프링 입문 - 회원 리포지토리 테스트 케이스 작성

개발한 코드가 잘 동작하는지 확인하기 위해서는, 테스트 케이스를 작성하여 확인해야 한다. 자바는 JUnit 이라는 프레임워크를 제공하여, 테스트를 효율적으로 실시할 수 있게 해준다. 우선 테스트 케이스를 작성할 패키지를 만들어 주자. 주의해야 할 점은, 앞서 코드를 작성했던 "Main" 디렉터리 밑이 아닌 그 아래에 있는 "test" 디렉터리 아래에 만들어야 한다는 점이다. test 디렉터리 밑에서, hello.hellospring.repository 패키지를 만들어 주자. repository 패키지 아래에 MemoryMemberRepositoryTest 클래스를 만들어 주자. 우리는 MemoryMemberRepository를 테스트할 것이기 때문에, 뒤에 Test만 붙여서 생성하는 것이다. 테스트 클래..

Development/Spring 2023.11.01

스프링 입문 - 회원 도메인과 리포지토리 만들기

우선, 도메인을 구현할 패키지인 hello.hellospring.domain 패키지를 만들자. domain 패키지 하위에, Member 클래스를 만들자. 그리고 위와 같이 도메인 역할을 할 Member 클래스를 작성해 주자. 비즈니스 요구사항에서, 데이터는 회원ID, 이름 2가지였다. 그 역할을 해줄 id, name 필드를 선언하고 getter setter를 작성한 것이다. 다음은 repository 패키지를 만들어 주자. repository 패키지 하위에, MemberRepository "인터페이스"를 만들자. 위와 같이 인터페이스를 작성해주자. 여기서 구현을 할 수는 없고, 추상 메소드 4개를 선언했다. 이것은 MemoryMemberRepository라는 구현 클래스에서 구현할 것이다. reposit..

Development/Spring 2023.10.29

스프링 입문 - 비즈니스 요구사항 정리

본격적으로 개발을 하기 앞서, 우선 비즈니스 요구사항을 정리해야 한다. 복잡한 비즈니스 로직을 배우는 것이 아닌, 스프링이 어떻게 돌아가는지를 이해하기 위함이므로 가장 쉬운 비즈니스 요구사항을 택할 것이다. 일반적인 웹 애플리케이션 계층 구조는 이렇다. 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 핵심 비즈니스 로직 구현. 도메인을 이용한 서비스, 기능, 로직 그 자체를 의미 리포지토리(저장소): 데이터베이스에 접근하고 도메인 객체를 DB에 저장하고 관리함. 도메인: 비즈니스 도메인 객체. 회원, 주문, 쿠폰 등등. DB에 저장되고 서비스로써 이용될 것들. 비즈니스 요구사항 데이터: 회원ID, 이름 기능: 회원 등록, 조회 아직 데이터 저장소가 선정되지 않은 상태라는 가정 ( 어떤 DB를 사용할지 정해..

Development/Spring 2023.10.29

스프링 입문 - API

정적 컨텐츠를 제외하면, 웹 브라우저(클라이언트)에게 데이터를 전송하는 방법은 크게 2가지가 있다. 첫번째가 MVC(Model, View, Controller), 두번째가 API이다. MVC 방식은 html로 View를 만들고 템플릿 엔진으로 렌더링하여 전송한다고 하면, API 방식은 View를 사용하지 않고, 데이터 그 자체 또는 객체를 렌더링 없이 그대로 전송한다. 우선 API 방식을 실습해보기 위해, 컨트롤러를 열어주자. 컨트롤러 맨 아래쪽에, helloString 메소드를 생성하자. 여기서 중요한건 @ResponseBody 어노테이션이다. ResponseBody는 데이터를 http response의 body부분에 직접 넣어주겠다는 뜻이다. 리턴값은 "hello " + name 이므로, 웹브라우저엔..

Development/Spring 2023.10.26

스프링 입문 - MVC와 템플릿 엔진

MVC : Model, View, Controller Model : 데이터나 비즈니스 로직을 나타냄, 사용자 정보, 주문 정보 등 모두 모델이라고 할 수 있다. View : 사용자에게 데이터를 출력하고 인터페이스를 생성한다. Controller : 모델에 필요한 작업을 수행하고, 그것을 뷰로 전달하여 사용자에게 출력하도록 한다. 컨트롤러인 HelloController 파일을 열자. 새로운 페이지를 만들것이다. HelloController 파일에 코드를 추가하자. 기존 코드에 아래쪽 helloMvc 메소드 부분을 추가하면 된다. 웹에서 hello-mvc 주소로 접속하면 해당 코드가 실행된다. "name" 이라는 이름의 파라미터에 사용자로부터 입력값을 받아야 한다. 또한 View에, 입력받은 "name"값을..

Development/Spring 2023.10.24

스프링 입문 - 정적 컨텐츠

정적 컨텐츠는 MVC등 동적 기능을 사용하지 않고 html코드만을 그대로 출력하는 컨텐츠를 의미한다. 정적 컨텐츠를 구현하는 방법은 매우 간단하다. resources:static/hello-static.html 파일을 생성한다. 간단한 html코드를 입력한다. 나는 강의자료와 똑같이 입력했다. 스프링을 재가동해준다. 정적 페이지로 접근하는 방법은 간단하다. localhost:8080/hello-static.html 경로로 접속하면, 방금 작성한 페이지가 그대로 출력된다. 어떠한 동적 기능도 없는, html코드를 그대로 반영한 정적 페이지이다. 정적 페이지는 이렇게 매우 간단하게 생성할 수 있다. 우리가 hello-static.html 경로를 입력하면 스프링은 가장 먼저 hello-static.html의 ..

Development/Spring 2023.08.15

스프링 입문 - 빌드하고 실행하기

만들어진 웹서버를 배포할 수 있는 간단한 방법이 있다. 빌드하고, 빌드된 파일을 실행만 하면 어디에서든 웹서버를 가동시킬 수 있는 것이다. 먼저 스프링이 설치된(프로젝트가 설치된) 디렉터리로 온다. 그러면 이런 파일과 디렉터리들이 있다. 이 화면은 인텔리제이에서 실행한 터미널이고, git bash가 연동되어 있다. 강사님도 git bash를 사용하시고, 나도 리눅스 환경이 편해서 git bash를 인텔리제이 터미널에 연동했다. 연동 방법은 간단하니 구글링하면 쉽게 따라할 수 있다. 참고로 git bash는 리눅스 명령어를 따른다. ./gradlew build 해당 스프링이 설치된 위치에서, ./gradlew build 명령어를 입력한다. 그러면 이렇게 빌드가 시작된다. 만약 빌드가 잘 되지 않으면, ./..

Development/Spring 2023.08.01
728x90
반응형