Spring Boot와 mysql 연동 중 다음 에러가 발생했다. 해결방법 1(실패): implementation 'mysql:mysql-connector-java' → implementation 'mysql:mysql-connector-j' 해결방법 2(실패): connenctor.jar 파일 설치 후 프로젝트에 추가 원인 알고보니 원인은 config를 정의할때 뒤에 공백이 하나 들어가있었던 것….. 진짜 바보같은 이유지만 항상 조심하자 찾아준 동기 왈 : "IDE가 친절하게 노란색으로 표시까지 해주잖아" 할말하않 ..
ResponseEntity란?ResponseEntity를 설명하기 전에, 먼저 HttpEntity를 알아야한다.HttpEntity란 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스이다. 그리고 HttpEntity 클래스를 상속받아 구현한 클래스가 RequestEntity, ResponseEntity 클래스이다. ResponseEntity는 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다. 따라서 HttpStatus, HttpHeaders, HttpBody를 포함한다. ResponseEntity의 생성자를 보면 this( )를 통해서 매개변수가 3개인 생성자를 호출해 결국엔 아래 보이는 매개변수가 3개인..
개발을 하다보면 예외처리는 필수 불가결 적이다. 그리고 예외처리는 한 곳에서만 하는 것이 아닌, 내 코드 모든 곳에서 발생하는 AOP이다. 따라서 공통적으로 처리해야만 하는데, 이를 도와주는 어노테이션이 있다. @ControllerAdvice vs @RestControllerAdvice @ControllerAdvice란 @ExceptionHandler, @ModelAttribute, @InitBinder 가 적용된 메서드들을 AOP를 적용해 컨트롤러 단에 적용하기 위해 고안된 어노테이션이다. 클래스에 선언하게 되면, 모든 @Controller에 대한 전역적으로 발생하는 예외를 처리 가능하다. 또한 내부적으로 @Component가 선언되어 있어 빈으로 관리된다. @RestControllerAdvice란 @..
Spring의 JPA를 사용할 때 JPA는 테이블을 자동으로 생성해주는데, 기본적으로 한글 설정은 되어 있지 않다. 따라서 튜플에 한글 값을 넣게 되면 SQL Error: 1366, SQLState: HY000: incorrect string value 라는 에러가 발생하곤 한다. 첫번째 해결 방법 (급할 때) 이는 내가 만든 MySql 테이블의 언어가 UTF-8로 설정 되지 않아서 발생하는 문제인데, 바로 고치는 방법으로는 다음 명령어로 mysql 터미널에서 직접 한글입력이 가능하도록 변경해주는 방법이 있다. mysql > ALTER TABLE [테이블명] convert to charset utf8;그러나 모든 작업의 자동화는 개발자의 꿈이 아닌가?? 따라서 JPA가 자동으로 테이블을 만들때마다 위 설..
프로젝트 생성 및 의존성 추가 Mysql과 연동하여 JPA를 사용할 것이므로 위와 같은 dependencties를 추가한다. 기존 프로젝트에서 MySql과 JPA를 추가하여 사용하고 싶다면 build.gradle에 다음 두 줄을 추가한다. implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'mysql:mysql-connector-java:8.0.32' application.properties를 다음과 같이 작성한다. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost..
Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있다. 두 어노테이션의 주요한 차이점은 HTTP Response Body가 생성되는 방식이다. 두 어노테이션의 자세한 차이점과 사용법을 살펴보자. @Controller란? 전통적인 Spring MVC의 컨트롤러인 @Controller 주로 View를 반환하기 위해 사용한다. 아래 예시와 같은 과정을 통해 Spring MVC Container는 Client의 요청으로부터 View를 반환한다. Client는 URI 형식으로 웹 서비스에 요청을 보낸다. DispatcherServlet이 요청을 처리할 대상을 찾는다. HandlerAdapter을 통해 요청을 Controller로 위임한다. Control..
스프링 프로젝트 초기 설정 도중, 테스트를 돌리자 variable userRepository not initialized in the default constructor 에러가 발생했다. 생성자를 Lombok을 이용하여 만들었는데, variable not initialized in the default constructor라는 에러가 발생했다면, Lomnok이 정상적으로 동작하지 않는다는 뜻으로 다음과 같은 상황을 의심해봐야한다. Gradle 버전 확인 Gradle을 통해서 롬복 의존성 라이브러리를 추가해주었지만 동작하지 않는다면 자신의 Gradle 버전이 5.x 이상인지 확인해야한다. 그 이유는 Gradle 버전이 올라가면서 Lombok 의존성을 추가하는 방법이 바뀌었기 때문이다. Gradle 버전은 ..
이번 포스팅에서는 가장 대중적인 클라우드인 AWS EC2에 가장 대중적인 웹 프레임워크 조합인 스프링 부트 + 리액트 개발환경 구축하는 법을 다뤄보겠다. ➕ AWS 세팅 인스턴스 생성하기 aws의 ec2 대시보드에 들어가 인스턴스 시작 버튼을 눌러준다. 인스턴스 이름을 작성하고, OS 이미지로는 ubuntu 22.04 LTS를 선택해준다. (용도에 따라 이미지를 선택하면 된다.) 인스턴스 유형을 선택해준다. 비교적 최근에 나온 유형이 저렴하므로, t3 micro 버전을 선택해주었다. 프리티어를 사용할 경우 t2.micro를 선택해주어야 과금요소가 추가되지 않는다. 키페어를 생성해준다. 키페어는 후에 EC2 인스턴스에 원격으로 접속하기 위해 필수적으로 필요하고, 한 번 생성하면 다시는 다운할 수 없으므로 ..