이전에 MemoryMemberRepositoryTest class에서 단축키 [command + shift + T]를 누르면 새로운 테스트(New Test)를 추가할 수 있다. 먼저 회원 가입 서비스 테스트 코드를 given-when-then 방식으로 작성한다. 회원가입이라는 함수에 새로운 Member 객체를 선언하고 초기화한다. MemberService의 join 메서드는 repository에 객체를 넣고 그 id 값을 반환하기 때문에, then에서 repository에서 그 id를 가진 객체를 추출하고 Assertions.assertThat을 통해 비교한다. public class MemberServiceTest { MemberService memberService = new MemberService..
분류 전체보기
회원 서비스는 회원 Repository와 Domain을 활용하여 비즈니스 로직을 작성하는 부분이다. 우선 [Service]라는 패키지를 만들고, 하위에 [MemberService]라는 클래스를 생성합니다. 회원 서비스를 만드려면 우선적으로 회원 Repository가 있어야 한다. MemoryMemberRepository는 MemberRepository 인터페이스를 implement한 것이기 때문에 가능하다. public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); } 먼저 회원 가입 비즈니스 로직을 작성한다. 같은 이름인 회원은 포함하지 않겠다는 비즈니스 로직을 구현하..
개발한 기능을 테스트하기 위해서 자바의 main 메서드를 통해 실행하거나, 웹 어플리케이션의 컨트롤러를 통해서 해당 기능을 실행한다. 하지만 이러한 방법을 사용하기까지 시간 소모도 크고, 반복 실행도 어려우며, 여러 테스트를 한번에 실행하기가 어렵다. 이에 자바는 JUnit이라는 프레임워크로 테스트를 진행해서 이러한 문제를 해결한다. 테스트 케이스 작성하기 srt/test/java의 하위 디렉터리에 [repository]라는 Package를 생성한 후, 테스트할 레포지토리 명 뒤에 'Test'를 붙인 [MemoryMemberRepositoryTest]라는 Java Class를 생성한다. 다른 곳에서 끌어서 사용할 것이 아니기 때문에 public 접근 제어자를 지워도 상관 없다. 먼저 class 내에 re..
비즈니스 로직 요구사항 id: 회원 id name: 회원 이름 Domain [Domain] Package를 만든 후, 요구사항에 부합하는 변수를 선언한다. 이후 Getter-Setter를 추가해준다 package springTest.hellospring.domain; public class Member { private Long id; 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; } } Repository..
MVC 방식과 다르게 ViewResolver를 사용하지 않는다. 대신 HTTP의 Body부에 데이터를 직접 반환한다. 구현 먼저 Hello 객체를 선언한다. private으로 name 변수를 선언한 후, public 메서드인 Getter, Setter를 통해 name으로 접근한다. static class Hello { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } hello-api라는 url을 매핑해준 후, @ResponseBody를 추가한다. hello 객체를 반환하는 helloApi를 구성한다. 객체를 반환하고, 앞에 @ResponseB..
Template Engine을 Model, View, Controller 방식으로 쪼개어 View를 Template Engine으로 html을 프로그밍한 것으로 렌더링하여, 렌더링 된 html을 브라우저에 전달해주는 방식 개요 내장 Tomcat 서버를 먼저 거친 후, Spring에게 전달한다. Spring은 hello-mvc가 있는 helloController의 메서드를 호출한다. View를 찾아주고 template engine를 연결시켜주는 View Resolver(화면과 관련된 역할 수행)가 동작하여 hello-template를 찾는다. Thymeleaf 템플릿 엔진에게 처리해달라고 넘긴다. Thymeleaf 템플릿 엔진에서는 처리 후 변환하여 웹 브라우저로 전달한다. 구현 1. Controller에..
파일을 웹 브라우저에 그대로 전달하는 방식이다. 개요 hello-static.html 페이지를 요청하면 Spring에 내장된 Tomcat 웹서버가 요청을 받은 후 Spring으로 요청을 전달한다. Spring은 우선적으로 Controller에서 hello-static.html이 있는지 확인한다. 없다면 static에서 찾는다. html 파일을 그대로 웹 브라우저로 전송한다. 구현 1. static 폴더에 hello-static.html 파일 생성 후, 코드 작성 및 실행 2. 이후 URL에 다음과 같이 주소 기입하면 반환한다. 출처 https://www.inflearn.com/course/스프링-입문-스프링부트 [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 ..
처음 build.gradle 파일을 IntelliJ IDEA로 열었는데, Java 버전 세팅을 마치더라도 빌드가 되지 않는 이슈가 있었습니다. 이유를 찾던 도중 Configuration이 설정되지 않았다는 것을 확인하였으며, 이를 해결하고자 [Run/Debug Configurations]에서 현재 Application Template이 어떻게 설정되어 있는지 확인하였습니다. 하지만 Template을 새로 추가해야 했습니다. Template를 새로 추가하였을 때, main class 부분에 빨간색 박스가 쳐져 있으면서, shift + enter로 메인 클래스 설정을 도와주는 창을 확인하면 전혀 Main Class (Main 함수)를 인지하지 못하는 것처럼 보였습니다. 이를 해결하기 위해서는 main 함수를..
Java 21 버전에서 11 버전으로 사용 변경하였기 때문에, IntelliJ에서도 세팅해주도록 하겠습니다. 먼저 build.gradle 파일입니다. java { sourceCompatibility = '11' } Settings - Build, Execution, Deployment - Build Tools - Gradle Settings - Build, Execution, Deployment - Compiler- Java Compiler File - Project Structure - Project - SDK, Language level File - Project Structure - Modules - Language level Run - Edit Configurations - Build and ru..
본 포스팅에서는 IntelliJ IDEA를 통해 처음으로 프로젝트를 빌드하면서 발생했던 이슈들을 정리하고자 합니다. Java 설치 실습에서는 java 11 버전으로 실습을 진행하기 때문에, openjdk 11을 설치할 필요가 있었습니다. 버전을 확인하는 명령어를 실행하니 저도 모르는 사이 java 21 버전으로 사용중이었습니다. java -version 그래서 우선적으로 설치된 java 버전을 확인하기 위해 다음 명령어를 실행하였습니다. 11 버전이 설치되어 있지 않은 것을 확인하고, /usr/libexec/java_home -V homebrew를 통해 openjdk 11 버전을 설치하였습니다. brew install openjdk@11 ** 하지만 설치한 11 버전이 인식이 잘 되지 않아서 설치된 11..