일일히 테스트 코드를 작성하지 않고 클래스를 선택한 후 ctrl + shift + T를 눌러주면 바로 테스트 코드가 작성된다. 테스트를 생성할 메소드를 선택해주고 ok를 누르면 테스트 코드가 생성된다. 우선 회원가입 테스트 코드를 작성해보자 여기서 주석처리 된 given when then은 각 코드에 어떤 값이 들어오고 어떤 동작을 하고 그 결과를 출력하는 과정을 코드 가동성을 위해 나눠서 표시했음을 의미한다. 우선 회원가입 테스트 코드를 작성해보자 member 객체를 생성해준 후 setName 메서드를 사용해 이름값을 spring으로 저장해줬다. 이어서 memberService의 join 메서드를 사용해서 Long 타입의 saveId에 저장해줬고 결과적으로 member의 이름값을 호출해 비교했을때 Tr..
java
학습 목표 Java에서의 오류인 예외(Exception) 처리에 대해 설명할 수 있다.입출력 처리를 위한 스트림(Stream)에 대해 설명할 수 있다.텍스트 파일의 완성형(KS)코드와 Unicode에 대해 설명할 수 있다.텍스트 파일의 읽기, 쓰기키보드로부터 입력을 받는 방법에 대해 설명할 수 있다.학습 내용 예외(Exception) 처리 방법 예외와 예외처리 예외프로그램을 실행했을 때 발생하는 에러예외처리에러 예외에 대응하는것 자바는 예외가 발생하면 자동으로 전용 클래스의 오브젝트가 생성됨예외 클래스에는 Exception 클래스와 그 서브클래스가 있음예외가 발생할 것 같은 처리를 수행할 경우에 try문 catch문 finally문을 사용함 예외처리 예외가 일어날 것 같은 메소드는 throw 를 사용하여..
테스트 케이스란 개발한 기능을 실행해서 테스트 할 때 main 메서드를 통해서 실행하면 시간이 너무 오래걸리고 반복 실행하기 어렵다. 이를 해결하기 위해 JUnit이라는 프레임 워크로 테스트를 실행한다. 우선 메서드 당 테스트가 끝나면 store을 초기화 시켜주는 메서드를 생성해주었다. 이 메서드를 AfterEach로 테스트 코드에 적용시킨 모습 repository 클래스를 생성하고 해당 클래스의 save 메서드를 사용해 testcode를 작성했다. 마찬가지로 findByName 메서드의 testcode다 findAll 메서드의 testcode
비즈니스 요구사항 정리 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트 케이스 작성 회원 서비스 개발 회원 서비스 테스트 비즈니스 요구사항 정리 데이터 : 회원ID, 이름 기능 : 회원 등록, 조회 아직 데이터 저장서가 선정되지 않음(가상의 시나리오 일반적인 웹 애플리케이션 계층구조 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 핵심 비즈니스 로직 구현 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인 : 비즈니스 도메인 객체. 예) 회원,주문,쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 아직 데이터 저장소가 선정되지 않어서 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계 데이터 저장소는 RDB noSQL 등등 다양한 저장소를 고민중인 상황으로 가정 개발을..
도메인 이 코드는 주로 회원 정보를 담는 객체를 생성하고, 이 객체에 대한 식별자와 이름을 설정하거나 가져올 수 있도록 한다. 예를 들어, 회원 가입 시에는 회원의 이름을 설정하고, 데이터베이스에서 회원을 조회할 때는 회원의 식별자를 사용할 수 있다. 해당 클래스는 스키마와 비슷한 역할을 하는 것 같다. 인터페이스 다음으로 Member Repository 인터페이스를 만들어보자 해당 인터페이스는 CRUD 작업을 수행하기 위한 메소드를 선언하는 인터페이스로 해당 코드에서 실질적인 작업이 이루어지는게 아닌 해당 인터페이스를 구현한 클래스에서 작성된다. (CRUD 구현을 위한 쿠키틀) 리포지토리 해당 코드는 MemberRepository 인터페이스를 구현하여 CRUD(Create, Read, Update, D..
API란? api는 json이라는 데이터 포멧으로 클라이언트에게 데이터를 전달하는 방식 요즘 많이 쓰인다 helloString 메서드를 생성해준다. 여기서 주의해야 할 점은 GetMapping 외에 ResponseBody 를 추가해줘야 한다 ResponseBody는 http의 body 부분에 해당 데이터를 직접 넣어준다는 뜻이다 Http 헤더와 바디에 대한 부가 설명 HTTP(하이퍼텍스트 전송 프로토콜)는 웹 서버와 클라이언트 간에 통신하기 위해 사용되는 프로토콜입니다. HTTP 요청과 응답은 일반적으로 헤더와 바디 두 부분으로 나뉘어집니다. 헤더(Header): HTTP 헤더는 요청이나 응답에 대한 메타데이터 정보를 포함합니다. 일반적으로 헤더는 다음과 같은 정보를 제공합니다: 요청 헤더: 클라이언트가..
정적 컨텐츠란? 서버에서 처리하는게 아닌 파일을 웹브라우저에 그대로 내려주는것 스프링 부트는 정적 컨텐츠 기능을 지원한다. 정적 컨텐츠를 생성한 모습 내가 입력한 파일을 토대로 웹이 생성된 모습 웹 브라우저 → localhost:8080/hello-static.html → 내장 톰켓서버 → 컨트롤러에서 hello-static 관련 컨트롤러 유무 확인 → 없으면 resources에서 hello-static.html 파일이 있는지 조회 → 있으면 코드 그대로 반환
MVC와 템플릿 엔진이란? Model View Controller의 약자다 mvc와 템플릿 엔진은 서버에서 변형을 거친 뒤 html을 내려주는것 View는 화면을 처리하는데 집중해야하고 Model은 비지니스 로직과 관련 있거나 내부적인것을 처리하는데 집중해야함 컨트롤러에 hello-mvc를 매핑해주고 파라메터를 받아주는 메서드를 생성했다. hello 메서드에서는 “hello!!” 값을 직접 넣어주었지만 hello-mvc 메서드에서는 외부에서 넘어온 파라메터인 name의 값을 html에 출력하게 만든다. thymeleaf 엔진과 연동시켜준다. 값이 들어오면 hello! empty값이 “hello + {name} 값으로 치환된다. 하지만 hello-mvc를 호출했을때 오류가 발생한다. 그 이유는 파라메터 정..
학습 목표 final과 static 제한자를 사용해 프로그래밍 할 수 있다. This를 사용해 프로그래밍 할 수 있다. 추상 클래스(abstract class)와 추상 메소드(abstract method)에 대해 설명할 수 있다. 인터페이스(interface)의 정의, 구현, 상속에 대해 설명할 수 있다. 다형성(polymorphism)에 대해 설명할 수 있다. 클래스와 오브젝트를 응용해 사용할 수 있다. 학습 내용 final과 static 제한자 final 제한자 final을 필드에 붙이면 필드는 값을 변경할 수 없음 final을 클래스에 붙이면 상속을 할 수 없음 해당 코드는 final 컴파일 에러가 발생한다. final Animal 클래스를 상속하려 했고 final int a의 값을 변경하려 했기 ..
프로젝트의 구성 src 에는 source 파일을 저장하고 실행하면 bin 폴더에 기계어로 컴파일 된 byte 코드가 class 파일의 형식으로 저장된다. 인텔리제이 설치 및 프로젝트 생성 방법 JetBrains 홈페이지 (https://www.jetbrains.com/idea/)에 접속하여 IntelliJ IDEA를 다운로드한다. 다운로드가 완료되면 설치 파일을 실행한다. 설치 과정에서는 기본 옵션으로 설치를 진행한다.. IntelliJ IDEA를 실행한 후 Create New Project를 선택한다. Project SDK를 선택한다. JDK가 설치되어 있지 않은 경우 다운로드하여 설치한다. Project name과 Project location을 입력한 후 Finish를 선택한다. 새로운 프로젝트가 ..