Spring
-
Validation으로 요청 값 검증Spring 2022. 3. 15. 20:14
Validation으로 요청 값 검증 클라이언트가 요청 값을 보낼 때, Validation을 이용하여 서버에서 올바른 값인지 검증해보자. 의존성 추가 gradle을 이용한다면 build.gradle에 다음과 같은 의존성을 추가해 준다. compile group: 'javax.validation', name: 'validation-api' compile group: 'org.hibernate', name: 'hibernate-validator', version: '6.1.0.Final' Dto 작성 클라이언트에게 제공받은 데이터를 처리할 SignupDto를 다음과 같이 작성한다. import lombok.*; import org.hibernate.validator.constraints.Length; imp..
-
서버 실행 시 DB Table 생성Spring 2022. 3. 15. 20:04
서버 실행 시 DB Table 생성 ApplicationRunner을 구현하는 객체를 만들어서 서버 실행 시 DB Table을 생성해보자. DatabaseConfig config 패키지를 만들고 DatabaseConfig를 다음과 같이 작성해 주자. import lombok.RequiredArgsConstructor; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; import javax.sql.DataSource; import java.sql.Connection; import j..
-
maven 프로젝트에서 h2 실행Spring 2022. 3. 14. 00:57
maven 프로젝트에서 h2 실행 pom.xml com.h2database h2 runtime 스프링 부트 이니셜 라이저는 버전에 대한 설정이 없이 위의 형태로 dependency를 생성해 준다. 보안에 대한 이슈가 추가된 1.4.198 이상의 버전은 충돌이 일어날 수 있으므로 1.4.197을 추가해서 다음과 같이 dependency를 설정하자. com.h2database h2 1.4.197 runtime application.yml or property application.yml or property에 다음과 같이 추가해 준다. spring.datasource.url: jdbc:h2:mem:testdb spring.datasource.driverClassName: org.h2.Driver spring..
-
회원가입 DTO 만들기Spring 2022. 3. 14. 00:48
User Join DTO(Data transfer Object) 생성 회원가입에 필요한 DTO를 만들어 회원 등록을 해보자. DTO(Data transfer Object) DTO는 데이터를 전송하기 위해 사용하는 객체이다. DAO(Data Access Object)와는 다르게 작업을 전담하는 메서드를 만들지 않기 때문에, Getter/Setter와 생성자 외에는 별도의 메서드를 정의하지 않는다. Entity 객체 다음과 같은 Entity 모델이 있다고 하자. import lombok.*; import javax.persistence.*; @NoArgsConstructor @AllArgsConstructor @Getter @Builder @Entity public class User extends Crea..
-
Spring GlobalExceptionHandler 생성Spring 2022. 3. 13. 01:44
GlobalExceptionHandler 생성 서버에서 발생하는 오류가 발생했을 때 이를 필터링해주고 오류 페이지로 처리해 주는 Global Exception Handler를 생성하자. Exception TaskService @Transactional(readOnly = true) public Task findTask(long id) { Task requestTask = taskRepository.findById(id).orElseThrow(()->{ return new IllegalArgumentException("해당 task를 찾을 수 없습니다."); }); return requestTask; } 다음과 같이 Task라는 Entity를 조회하는 Service 객체가 있다고 하자. id를 통해 데이터..
-
mustache에서 summernote 사용Spring 2022. 3. 13. 01:36
summernote + mustache 웹에디터인 summernote 글을 작성하고, 스프링 컨트롤러를 통해 데이터를 전달해서 mustache에서 작성한 글을 확인해본다. summernote 연결 및 생성 import summernote 사용 시에 필요한 라이브러리들을 우선 임포트 해 준다. summer note 클래스 지정 ToDo 위와 같이 부트스트랩에서 summernote로 사용될 클래스를 만들어주고, 클래스에 summernote를 추가한다. 스크립트 태그에 서머 노트를 사용할 수 있게 추가해 준다. height 속성으로 크기를 필요한 만큼 지정해 준다. summernote 화면 위와 같이 프론트에서 서머 노트를 사용할 수 있다. ajax로 연결 위의 이미지처럼 버튼을 하나 만들고, ajax로 스프..
-
Post 요청 테스트 코드 작성Spring 2022. 3. 12. 19:51
Post 요청 테스트 코드 작성 Post 요청으로 사용자를 등록하는 테스트 코드를 작성해보며 Junit 5 테스트 코드를 알아보자. JPA를 이용해 MySQL에 User를 등록하는 코드를 다음과 같이 작성했다. model/User.java package com.vividswan.studymate.model; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; import java.sql.Timestamp; @NoArgsC..
-
웹 서버와 톰켓의 차이Spring 2022. 3. 11. 12:12
웹 서버와 톰켓의 차이 정적인 자료는 Web 서버, 동적인 응답의 수행은 톰켓이 한다. 웹 서버 (아파치) 웹 서버는 정적인 자원을 응답해줄 수 있다. 웹 서버가 보내 줄 수 있는 정적인 자원이란 요청 시 마다 변하는 동적인 자원과 다르게 달라지지 않는 자원을 말한다. 정적인 자원은 서버에서 따로 변경해줄 것이 없으므로 요청이 들어오면 그 파일 자체로 응답만 해주는 역할만 하면된다. 톰켓 .jsp와 같은 자바 코드가 적혀있는 소스를 요청 받았다고 하자. 웹브라우저는 html, css, javascript, css, 정적 자료들(avi, 이미지 등등)외에는 인지를 못하고 내용이 깨져버리기 때문에 자바코드를 html로 변환하여 응답해주어야 한다. 이때 어파치는 자바 코드를 이해하지 못하기 때문에 자바 코드를..