만쥬의 개발일기
article thumbnail
[Spring / trouble Shooting] - java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

Spring Boot와 mysql 연동 중 다음 에러가 발생했다. 해결방법 1(실패): implementation 'mysql:mysql-connector-java' → implementation 'mysql:mysql-connector-j' 해결방법 2(실패): connenctor.jar 파일 설치 후 프로젝트에 추가 원인 알고보니 원인은 config를 정의할때 뒤에 공백이 하나 들어가있었던 것….. 진짜 바보같은 이유지만 항상 조심하자 찾아준 동기 왈 : "IDE가 친절하게 노란색으로 표시까지 해주잖아" 할말하않 ..

article thumbnail
[Spring Boot] - 클라이언트 접속 IP 기록용 Tomcat Access Log 설정하기

Tomcat Access Log란? 웹 서버의 로그 파일로서 클라이언트의 HTTP 요청 및 응답에 대한 정보를 기록하는 로그입니다. 이를 통해 애플리케이션의 동작 상태를 파악하고 문제를 해결하는 데 유용하게 사용됩니다. Tomcat Access Log 사용 목적 💡 가장 주요한 사용 목적은 HTTP 요청 및 응답 정보를 기록 애플리케이션의 동작 상태 파악 애플리케이션의 성능 분석 보안 이슈 파악 사용자 행동 분석 Access Log의 구성 요소 구성 요소의 종류 구성요소 약어 설명 Remote Host %a HTTP 요청을 보낸 클라이언트의 IP 주소 Timestamp {yyyy-mm-dd HH:mm:ss} HTTP 요청이 발생한 시간 Request Line %r HTTP 요청 메서드, URL 및 HTT..

article thumbnail
[Spring Boot / Trouble Shooting] - 스프링 부트 프로젝트의 외부 접속이 막혔을 때 다양 해결 방법

Spring Boot로 외부 메인 서버에 서버를 띄웠을 때, 분명 서버도 잘 올라가 있고 내부망에서는 API 송수신이 되는데, 간혹 외부 접속은 아예 불가능 한 경우가 있었다. 그때의 해결 방법들을 모아보자. 다음 먼저 개발 환경은 다음과 같다. Spring Boot 버전 3 이상 Linux Ubuntu 20.04 스프링 설정에서 외부 접근 권한이 막혔을때 application.properties에 다음 내용을 추가한다. server.port=8080 server.address=0.0.0.0 server.port 설정은 내가 서버를 열 포트를 지정한다. (default는 8080) server.address=0.0.0.0 는 모든 IP에서의 접근을 허용한다. 스프링 부트의 port가 외부 접근이 막혔을 ..

[Spring] - @ResponseEntity의 이해와 사용 방법

ResponseEntity란?ResponseEntity를 설명하기 전에, 먼저 HttpEntity를 알아야한다.HttpEntity란 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스이다.  그리고 HttpEntity 클래스를 상속받아 구현한 클래스가 RequestEntity, ResponseEntity 클래스이다. ResponseEntity는 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다. 따라서 HttpStatus, HttpHeaders, HttpBody를 포함한다.  ResponseEntity의 생성자를 보면 this( )를 통해서 매개변수가 3개인 생성자를 호출해 결국엔 아래 보이는 매개변수가 3개인..

article thumbnail
[Spring] - @RestControllerAdvice를 이용해서 예외처리 AOP 처리하기

개발을 하다보면 예외처리는 필수 불가결 적이다. 그리고 예외처리는 한 곳에서만 하는 것이 아닌, 내 코드 모든 곳에서 발생하는 AOP이다. 따라서 공통적으로 처리해야만 하는데, 이를 도와주는 어노테이션이 있다. @ControllerAdvice vs @RestControllerAdvice @ControllerAdvice란 @ExceptionHandler, @ModelAttribute, @InitBinder 가 적용된 메서드들을 AOP를 적용해 컨트롤러 단에 적용하기 위해 고안된 어노테이션이다. 클래스에 선언하게 되면, 모든 @Controller에 대한 전역적으로 발생하는 예외를 처리 가능하다. 또한 내부적으로 @Component가 선언되어 있어 빈으로 관리된다. @RestControllerAdvice란 @..

article thumbnail
[Spring] - JPA 칼럼명 카멜케이스 적용하기

JPA를 사용하다보면 entity의 칼럼명에 있는 카멜케이스를 자동으로 스네이크 케이스로 변환하곤 한다. 정 카멜케이스를 쓰고 싶다 하면 다음 설정을 따라하면 된다. application.properties에 다음 내용을 저장한다. spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl 정상적으로 couple_id가 아닌 coupleId로 저장된 모습이다. r..

article thumbnail
[Spring] - JPA DDL-Auto 사용 시 한글 설정 자동화

Spring의 JPA를 사용할 때 JPA는 테이블을 자동으로 생성해주는데, 기본적으로 한글 설정은 되어 있지 않다. 따라서 튜플에 한글 값을 넣게 되면 SQL Error: 1366, SQLState: HY000: incorrect string value 라는 에러가 발생하곤 한다. 첫번째 해결 방법 (급할 때) 이는 내가 만든 MySql 테이블의 언어가 UTF-8로 설정 되지 않아서 발생하는 문제인데, 바로 고치는 방법으로는 다음 명령어로 mysql 터미널에서 직접 한글입력이 가능하도록 변경해주는 방법이 있다. mysql > ALTER TABLE [테이블명] convert to charset utf8;그러나 모든 작업의 자동화는 개발자의 꿈이 아닌가?? 따라서 JPA가 자동으로 테이블을 만들때마다 위 설..

article thumbnail
[Spring] - 스프링 MySql 데이터베이스와 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..