Java/Spring 8

[Spring] MockMvc 테스트에서 Model 전달

질문 상세 페이지를 테스트할 때, 컨트롤러에서는 질문의 내용을 모델에 담아 전달해 템플릿 엔진을 통해 출력했다. 테스트 코드에서 모델에 담아 전달할 방법이 어떻게 되는지 찾아봤는데, Model을 선언하고 넘길 수 있는 코드는 보이지 않았다. 생성된 객체를 전달하기 질문을 생성하고 질문의 상세 페이지를 접근하는 테스트코드를 작성할 때, 먼저, get을 통해 URI를 설정하고 접근할 것이다. 이 때, 생성된 질문을 전달해주기 위해서 flashAttr() 메서드를 사용한다. flashAttr() 메서드에 객체 이름과 생성된 객체를 전달해준다. mockMvc.perform(MockMvcRequestBuilders .get(String.format("/questions/%d", newQuestion.getId()..

Java/Spring 2021.07.13

[Spring] Test 코드에서 session 전달하기

스프링 웹 프로젝트에서 세션 기반의 로그인을 구현하고, 로그인한 회원에게만 질문 등록과 같은 특정한 기능을 제공하도록 로직을 구현했다. 세션은 HttpSession 객체를 파라미터로 전달하는데 테스트 상황에서는 적용되지 않았다. 테스트 코드에서 세션 사용 테스트 코드에서 Session을 사용하는 방식은 MockHttpSession을 통해 세션을 사용한다. MockHttpSession session = new MockHttpSession(); 사용방식은 기존의 세션과 동일하게 setAttribute(), getAttribute()와 같은 메서드를 활용할 수 있다. 이제, 생성된 세션에서 유저정보를 불어오는 것은 getAttribute 메서드를 통해 가져올 수 있다. 그렇다면, Controller에서 세션 ..

Java/Spring 2021.07.12

[Java Spring] Controller 구현 후 404 Error

Spring boot 프로젝트를 진행하다가 컨트롤러를 구현하고 이에 맞는 html 파일을 templates 경로에 생성했는데 404 Error가 발생함. (URL 확인, HTML 생성, Controller 확인) 해결 방법 1 이 때, application.properties 에 아래 코드를 추가하면 해결됨. spring.mustache.suffix=.html mustache를 템플릿 엔진으로 사용하는 프로젝트에서 위 설정을 해줘야 하는 듯 하다. 해결 방법 2 mustache는 기본적으로 .mustache 파일 확장자 명을 갖는다. 확장자를 html이 아닌 mustache로 설정해서 파일을 생성한다. 만약 itellij에 플러그인이 설치되어 있지 않으면 플러그인 설치. (아이콘이 수염달린 아이콘이어야 ..

Java/Spring 2021.06.21

[Spring-boot] H2 데이터베이스 연결하기

H2 DB H2 데이터베이스는 MySQL 기반으로 동작하며, 메모리 내 데이터베이스로 동작할 수 있다. 디스크에 저장할 수도 있다. 브라우저 기반의 콘솔까지 지원한다. build.gradle 설정 의존성 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' } application.properties 설정 spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.pa..

Java/Spring 2021.06.01

[Java Spring] 프로젝트 생성 후 테스트 코드

테스트 주도 개발은 아니여도 단위 테스트는 작성하는 것이 좋다. Testing the Web Layer this guide is designed to get you productive as quickly as possible and using the latest Spring project releases and techniques as recommended by the Spring team spring.io 간단한 index 페이지를 불러오는 Controller 작성 후 테스트 코드 1. 웹 애플리케이션이 동작하는지 확인하는 테스트 package kr.scene.board; import kr.scene.board.controller.BoardController; import org.junit.jupite..

Java/Spring 2021.05.30

[Spring boot로 게시판 만들기] 1. DB부터 CRUD 로직 구현하기

이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹서비스를 공부하며 기록한 것입니다. 자세한 내용은 책을 통해 공부해야 하기 때문에 간단하게 정리한 내용만 있습니다. 1. 롬복 Lombok, Gradle에 추가하기 build.gradle의 의존성 설정에 dependencies { compile(org.projectlombok:lombok) } 을 추가하고, [settings]-[Annotation Processor]에서 Enable annotation processing을 체크한다. 2. Spring Data JPA 적용하기 웹 애플리케이션에서 관계형 데이터베이스(RDB)는 빠질 수 없는 요소로, 애플리케이션 코드보다 SQL로 채워졌었다. SQL을 통해서만 데이터베이스에 저장하고 조회하다보니 SQL이 ..

Java/Spring 2021.04.13

[Spring boot로 게시판 만들기] 0. 프로젝트 생성부터 index.html

0. 프로젝트 생성 https://start.spring.io/ 에 접속한다. Build Tool은 Gradle로 선택했다. 언어는 JAVA. Spring Boot 버전의 경우 SNAPSHOT이나 M3가 붙지 않은 안정적인 버전을 선택한다. Group과 Artifact는 임의로 지정했다. Group 모든 프로젝트에서 이 프로젝트를 식별하게 해주는 식별자 역할을 한다. 원래, Java 패키지 이름 규칙을 따라 제어하는 도메인 이름의 반대로 시작해야 한다. ex) org.springframework와 같이 Artifact는 버전 없는 JAR 파일의 이름, 특수문자 없이 소문자로만 지정해야 한다. Packaging 방식은 WAR를 선택했다. JAR*와 WAR** 모두 자바 애플리케이션을 쉽게 배포하고 동작시킬..

Java/Spring 2021.04.08
반응형