Springboot (10) 썸네일형 리스트형 [Springboot] mysql 연결 과정과 에러 정리 개발환경 Java 8 Gradle 4.x Spring Boot 2.1.x application.properties spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/db_test?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&autoReconnection=true&allowPublicKeyRetrieval=true&useSSL=false //jdbc:mysql://localhost:포트번호(디폴트 3306)/디비이름?useSSL=false&useUnicode=true&serverTimezone=Asia/Se.. [Springboot-error] @Transactional(readOnly = true) 옵션 못 찾음 에러 내용 @Transactional(readOnly = true) 여기서 readOnly 옵션을 못 찾음. 해결 방법 Transactional 어노테이션 import 할 때 import javax.transaction.Transactional; 위 코드 대신에 아래 코드로 바꾸면 해결된다. (위 코드는 옵션을 허용하지 않고 아래 코드는 옵션을 허용한다. 어노테이션 기능은 똑같다.) import org.springframework.transaction.annotation.Transactional; [Springboot] createdDate, modifiedDate 관리 클래스 작성 //BaseTimeEntity.java package com.eunyeong.book.springboot.domain; import lombok.Getter; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import javax.persistence.EntityListeners; import javax.persistence.MappedSuperclass; import java.time.LocalDateTime; .. [Springboot-error] 테스트코드 에러 등록, 수정 api 작성하고 테스트코드 돌리는데 다음과 같은 에러가 났다. 에러 메시지 org.springframework.web.client.RestClientException: Error while extracting response for type [class java.lang.Long] and content type [application/json;charset=UTF-8]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.lang.Long` out of START_OBJECT token; n.. [Springboot] org.junit.ComparisonFailure: 401 에러 에러메세지 org.junit.ComparisonFailure: Expected :200 OK Actual :401 UNAUTHORIZED at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl... [Springboot] 테스트코드 작성 TDD와 단위테스트(Unit Test)의 차이 ● TDD: 테스트가 주도하는 개발 - 항상 실패하는 테스트를 먼저 작성하고(Red) - 테스트 코드를 성공시키기 위한 실제 코드를 작성하고(Green) - 테스트가 통과하면 실제 코드를 리팩토링 합니다.(Refactor) ● TDD가 필요한 이유 보통의 개발 방식은 '요구사항 분석 -> 설계 -> 개발 -> 테스트 -> 배포' 의 형태의 개발 주기를 갖는데 이러한 방식은 소프트웨어 개발을 느리게 하는 잠재적 위험이 존재합니다. 초기 설계가 완벽한 프로젝트는 없기 때문에 고객의 요구사항 또는 디자인의 오류 등 많은 외부 또는 내부 조건에 의해 재설계하여 점진적으로 완벽한 설계로 나아갑니다. 재설계로 인해 개발자는 코드를 삽입, 수정, 삭제 하는 과정에서 불필.. [Springboot-error] 테스트코드 404에러 테스트코드를 작성하던 도중 다음과 같은 에러가 났다. 에러메시지 java.lang.AssertionError: Status Expected :200 Actual :404 404가 발생한 이유는 생성한 컨트롤러 클래스에 아무것도 작성하지 않았기 때문에 매핑 요청이 왔을 때 404가 발생한 것이다. 그래서 컨트롤러 코드를 살펴보니 오타가 있었고 고치고 다시 실행하니 정상작동하였다. // HelloController.java package com.eunyeong.book.springboot.web; import com.eunyeong.book.springboot.web.dto.HelloResponseDto; import org.springframework.web.bind.annotation.GetMapping.. [Java] Final 키워드 ● 자바에서 절대 변하지 않는 특정한 것을 정하고 싶을 때 Final 키워드를 사용합니다. ● 이 키워드는 변수, 메소드, 클래스에 모두 사용할 수 있습니다. ● 변수에 사용할 경우 변하지 않는 상수가 되며, 메소드에 사용할 경우 재정의가 불가능한 메소드가 되며, 클래스에 사용할 때는 상속이 불가능한 하나의 완전한 클래스가 됩니다. - 변수에 사용할 경우 public class Main { public static void main(String[] args) { final int number = 10; // 상수 number = 5; // 에러 System.out.println(number); } } - 메소드에 사용할 경우 # Parent.java public class Parent { public f.. 이전 1 2 다음