본문 바로가기

학습 기록/스프링 부트3 백엔드 개발자 되기[자바편]

(35)
[04장.2] 1. JUnit, AssertJ, 테스트 코드 애너테이션 JUnit이란? : 자바 언어를 위한 단위 테스트 프레임워크 * 단위 테스트 : 작성한 코드가 의도대로 작동하는지 작은 단위로 검증하는 것 JUnit 특징 : 테스트 방식을 구분할 수 있는 애너테이션 제공 (@Test 애너테이션으로 메서드 호출 시, 호출할 때마다 새 인스턴스 생성 및 독립 테스트 가능) : 예상 결과를 검증하는 어셜션 메서드 제공 : 사용 방법이 단순하고 테스트 작성 시간이 적음 : 자동 실행, 자체 결과를 확인하고 즉각적인 피드백을 제공 JUnit로 단위 테스트 코드 만들기 [1단계] JUnitTest.java 파일 생성 public class JUnitTest{ @DisplayName("1+2는 3이다". ) // 테스트 이름 지정 @Test // 테스트 메서드 지정 public v..
[04장.1] 테스트 코드 개념 테스트 코드란? : 작성한 코드가 의도대로 잘 동작하고 예상치 못한 문제가 없는지 확인할 목적으로 작성하는 코드 : 유지보수에도 매우 좋고, 코드 수정 시 기존 기능이 제대로 작동하지 않을까 걱정하지 않아도 됨 given - when - then 패턴 given : 테스트 실행 준비 단계 when : 테스트 진행 단계 then : 테스트 결과 검증 단계 @DisplayName("새로운 메뉴를 지정한다.") @Test public void saveManuTest(){ // given : 메뉴를 저장하기 위한 준비 과정 final String name = "아메리카노"; final int price = 2000; final Menu americano = new Menu(name, price); // when..
[03장.3] 스프링 부트 요청-응답 과정 한 방에 이해하기 (1) 포스트맨에서 톰캣에 요청 진행 >> 스프링 부트 내로 이동 (2) 스프링 부트의 디스패처 서블릿이 URL을 분석하고 이 요청을 처리할 Controller를 찾음 요청을 처리할 수 있는 메서드를 가지고 있는 Controller를 찾아 요청을 전달 (3) 요청을 처리할 수 있는 메서드와 요청이 매치되고, 비즈니스 계층과 퍼시스턴스 계층을 통하면서 필요한 데이터를 가져옴 (4) 뷰 리졸버는 템플릿 엔진을 이용해 HTML, JSON, XML 등 데이터를 생성 (5) 요청에 대한 응답을 반환 * 위 내용을 책을 기반으로 정리한 것이기 때문에 더 자세한 동작 및 역할은 아래 블로깅 참고 [아래 블로깅 참고] https://kcode-recording.tistory.com/69 [Spring MVC] Spri..
[03장.2] 3. 기본 프로그램 작동 확인(03장.2-2 코드) [1단계] 애플리케이션 실행 시 원하는 데이터 자동 생성 : 인메모리 DB 사용으로 실행시 데이터가 사라지는 문제를 해결하기 위해 실행시마다 데이터를 넣을 SQL 파일 생성 : resource - data.sql 파일 생성 및 SQL 코드 작성 INSERT INTO member (id, name) VALUES (1, 'name 1') INSERT INTO member (id, name) VALUES (2, 'name 2') INSERT INTO member (id, name) VALUES (3, 'name 3') [2단계] application.yml 설정 spring: jpa: show-sql : true // (1) properties : hibernate : format_sql : true // (..
[03장.2] 2. 프레젠테이션, 서비스, 퍼시스턴스 계층 만들기 [프레젠테이션 계층] @RestController public class TestController{ @Autowired // TestService 빈 주입 TestService testService; @GetMapping("/test") public List getAllMembers(){ List members = testService.getAllMembers(); return members; } } [비즈니스 계층] @Service public class TestService{ @Autowired // MemberRepository 빈 주입 MemberRepository memberRepository; public List getAllMembers(){ return memberRepository.fi..
[03장.2] 1. build.gradle에 의존성 추가 build.gradle : 빌드를 설정하는 파일로 의존성이나 플러그인 설정 등 빌드에 필요한 설정을 하는 파일 [1단계] build.gradle에 의존성 설정 dependencies{ // ... 생략 ... // 스프링 데이터 JPA implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.h2database:h2' // 인메모리 DB compileOnly 'org.projectlombok:lombok' // 롬복 - 반복 메서드 작성 작업을 줄여줌 annotationProcessor 'org.projectlombok:lombok' } [2단계] 추가한 의존성 적용 의존성은 작성 후 바로 적용되는 것이 ..
[03장.1] 2. 스프링부트 프로젝트 디렉터리 구성 & main 디렉터리 구성 main : 실제 코드를 작성하는 공간 : 프로젝트 실행에 필요한 소스 코드나 리소스 파일이 모두 포함 - java, resource 폴더로 이루어져 있음 - java : 개발자가 작성한 코드 -resource templates : HTML과 같은 뷰 관련 파일 보관 디렉터리 static : JS, CSS, 이미지와 같은 정적 파일 보관 디렉터리 application.yml : 스프링 부트 설정 파일로, 스프링 부트 서버 실행시 자동으로 로딩되는 파일 test : 프로젝트의 소스 코드를 테스트 할 목적의 코드나 리소스 파일이 포함 build.gradle : 빌드를 설정하는 파일 : 의존성이나 플러그인 설정 등과 같이 빌드에 필요한 설정 진행 setting.gradle : 빌드할 프로젝트의 정보를 설정하는..
[03장.1] 1. 카페와 빵집으로 이해하는 계층 [예시] 카페는 커피를, 빵집은 빵을 판매 필요한 경우에는 협업 관계를 통해 손님이 커피를 사면 빵을 할인할 수 있음 >> 계층 간의 소통 하지만, 빵집 알바생이 빵을 팔다가 카페에서 커피를 팔 수는 없음 >> 서로 영향을 미치지는 못함 즉, 각 계층은 자신의 책임에 맞는 역할을 수행하며, 필요에 따라 소통함을 알 수 있음 [프레젠테이션 계층] : HTTP 요청을 받고 이 요청을 비즈니스 계층으로 전송하는 역할 : Controller가 프레젠테이션 계층 역할 수행 [비즈니스 계층] : 모든 비즈니스 로직 처리 : Service가 비즈니스 계층 역할 수행 * 비즈니스 로직 : 서비스를 만들기 위한 로직으로, 데이터를 처리하기 위한 로직, 예외 처리 로직 등의 역할 [퍼시스턴스 계층] : 모든 데이터베이스 ..