[Spring Boot] 스프링부트 GCP 배포하기 (Google Cloud Platform)
·
🍏 Spring Boot
오늘은 지금까지 만든 스프링 프로젝트를 구글 클라우드 플랫폼, GCP를 통해 배포해 보려고 한다.구글 클라우드에서는 처음에 무료 크레딧을 주니 받아두면 좋다 https://cloud.google.com/free?gad_campaignid=17391149414&gad_source=1&gclid=Cj0KCQjwrPHABhCIARIsAFW2XBMd2UVlP5tGn22-5a-lcaOyilfwxbVdmR02FDEhIsZM1g52ICnGm-AaAnjOEALw_wcB&gclsrc=aw.ds&hl=ko&userloc_9213263-network_g=&utm_campaign=japac-KR-all-ko-dr-BKWS-all-cloud-trial-PHR-dr-1710102&utm_content=text-ad-none-n..
[Spring Boot] @Value 어노테이션 오류 / application.yml 값 인식 실패
·
🍏 Spring Boot
제목 그대로... 이러한 빨간 줄이 계속 발생했다. @Value 어노테이션을 붙이고, application.yml에ai: api: url: https://이렇게 설정까지 했는데 읽어오기는 커녕계속 이렇게 static Constructor을 더하라고 경고문이 떴다.그래서 public AnalyzeService(@Value("${ai.api.url}") String fastApiUrl, WebClient.Builder builder) { this.webClient = builder.baseUrl(fastApiUrl).build(); }이런 것도 사용해 보고... 먼저 인젝션을 해 주려고 했는데 여전히 같은 오류가 떴다.@PostConstruct를 쓰는 방법도 있었지만전에 그걸 사용했..
[Git] 깃허브 커밋 메시지 규칙
·
🦖 Git
불과 한 달 전까지 나는 깃허브에 커밋할 때 내 마음대로 커밋 메시지를 쓰곤 했다... (ex: user 로직 수정, 폴더 이동) 이렇게 쓰다보니 나는 편한데 나중에 프로젝트 정리하려고 보니까 뒤죽박죽 예쁘지도 않고그래서 요즘은 커밋 메시지 규칙에 따라 작성 중이다! 보기 훨씬 편하고 통일감 있어서 좋다(근데 다시 읽다보니 나는 제목 첫 글자를 소문자로 작성해서 앞으로 유의해야겠다...) 🔥 커밋 메시지 구조기본 커밋 메시지 구조는 제목, 본문, 꼬리말 세가지 파트로 나누고, 각 파트는 빈 줄을 두어 구분한다 🔥 커밋 메시지 작성 기본 7가지 규칙제목과 본문을 한 줄 띄워서 구분 제목은 영문 기준 50자 이하 첫 글자는 대문자로 작성제목 끝에 마침표 X제목은 명령문으로 사용 본문의 각 행은 영문 ..
[Spring Boot] @RestController와 @Controller의 차이
·
🍏 Spring Boot
이 글을 작성하는 이유계속 404가 뜨던 요청이 @Controller에서 @RestController을 붙이자마자 해결된 것이다도대체 왜일까 내 10시간을 어디에 바친 것인가그러나 이 모든 것은 내 무지에서 출발하였다...한바탕 데이고 알아보는 두 어노테이션의 차이점. ✴️ @Controller ?컨트롤러는 애플리케이션을 구성하는 핵심 요소 중 하나로, URI와 매핑하여 클라이언트의 요청에 알맞은 응답을 반환하는 곳이다.Spring의 @Controller 어노테이션은 View를 반환한다. ✴️ @RestController ?Controller 앞에 Rest가 붙은 이 RestController는 @Controller + @ResponseBody 의 개념이라고 한다.그래서 @RestController 어노..
[mysql] 서버와 데이터베이스의 시간대 차이 문제 / UTC, serverTimezone
·
🦎 프로그래밍
rds 로 연결한 mysql 테이블의 데이터 값을 보다 보니현재 시간과 다른 것을 발견했다. 이유를 알아보니 서버와 데이터베이스의 시간대(timezone)가 달랐다. MySQL 서버의 시간대 확인 다음 sql 문을 통해 mysql 서버의 시간대를 확인할 수 있다. SELECT @@global.time_zone, @@session.time_zone;  그럼 이런 결과를 받게 되었는데@@global.time_zone@@session.time_zoneUTCUTC한국(Seoul) 시간은 UTC+9이므로, 저장 시점보다 9시간 빠르게 저장되고 있던 것이다. Spring Boot와 MySQL 시간대 맞추기 시간대를 맞추는 방법은 여러 가지가 있는데 우선1️⃣ MySQL 시간대를 Asia/Seoul로 변경 SETGL..
[Spring Boot] The requestURI was rejected because it can only contain printable ASCII characters
·
🍏 Spring Boot
@RequestParam 을 MultipartFile 타입으로 받아서 포스트맨으로 file 타입을 전송하는데, 400 오류가 뜨며 다음과 같은 에러 메시지가 출력됐다. The requestURI was rejected because it can only contain printable ASCII characters 이게 무슨 소리인가... 하니ASCII 범위를 벗어나는 문자가 포함되어 있어서 Spring Security에서 차단한 것이라고 한다 하지만 내 파일 이름은 단순히 tumbler.jpg 였기에 파일 이름의 문제는 아닌 것 같았다  챗지피티한테 물어봤을 때는 1. 서비스 메서드 안에서 파일 이름을 ASCII 코드로 바꿔서 전송하거나,2. 방화벽 설정을 비아스키코드 허용으로 바꾸라는데... 1번은 ..
[Spring Boot] @RequestParam, @RequestBody
·
🍏 Spring Boot
post와 get의 차이는 간단하다. post는 정보를 새로 생성하거나 업데이트할 때, get은 정보를 요청할 때 (가져올 때) 사용한다. 그러나 이걸 컨트롤러 계층에서 @PostMapping, @GetMapping 으로 api를 호출하여 사용할 때 @RequestBody 와 @RequestParam의 차이는 뭐지? 언제 써야 하지? 와 같은헷갈림이 종종 발생하여내 이해를 위해 정리해 보기로 한다. . . 🍏 POST vs GET  GET - 서버로부터 정보를 요청할 때 사용하는 HTTP 메서드POST - 정보를 생성하거나 업데이트할 때 사용하는 HTTP 메서드 🍏@RequestParam쿼리 파라미터, 폼 데이터 또는 URL에서 값을 추출할 때 사용됨HTTP 요청 파라미터의 이름으로 바인딩하여 변수에..
[Spring Boot] 1. RDS MySQL 배포하기
·
🍏 Spring Boot
무지하게 오류가 많이 났던... 배포 일기. 맨 처음에는 ubuntu 내에 mysql 을 설치해서 해보려 했으나느리기도 느리고마지막 에러 해결이 안 돼서 정신이 나갈 뻔했다그래서 내 부족함을 인정하고 rds 로 재빠르게 피신했다. . .근데 이것도 두 번째 생성 일기  우선 RDS를 생성하기 위해 AWS에 접속 검색창에 rds 검색하면 맨 위에 뜨는데 들어가서 데이터베이스 생성을 누릅니다.  많고 많은 것 중에 내가 사용할 것은 MySQL  엔진 버전 설정해 주고  우리의 통장은 소중하니 프리티어를 꼭! 적용해 줍시다 그리고 이걸 보는 개발자님은 허리 한번 펴고 스트레칭 합시다 이것도 통장을 지키는 방법 중 하나이니까요  이것도 마찬가지로 각자 사용할 식별자와 이름, 그리고 아래에 비밀번호까지 입력하면 ..
[Spring Boot] @Transactional 이란?
·
🍏 Spring Boot
🍏 @Transactional 이란?스프링부트에서 사용되는 어노테이션 중 하나로, 'Transaction' 을 적용시킨다.  그렇다면 'Transaction' 이란?= 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위  그래서 @Transactional 을 붙이면, 그 메서드는 하나의 단위가 되어 실행되고메서드 실행이 중단됐을 시 일부만 적용되는 것을 막아 준다! 예를 들어 @Transactional{userRepository.save(newUser);articleRepository.save(newArticle);}이런 식의 메서드가 있다고 가정했을 때, newArticle에 오류가 있어 저장이 진행되지 않았다면newUser 또한 저장이 되지 않는 것이다.  🍏 @Transactiona..
[Spring Boot] 시작하기 / 기본 개념 정리
·
🍏 Spring Boot
🍏 기본 개념 정리서버와 클라이언트란?클라이언트: 서버로 요청하는 모든 프로그램. 대표적인 예: 웹 브라우저서버: 클라이언트의 요청을 받아 처리하는 주체데이터베이스에 대하여데이터베이스: 여러 사람이 데이터를 한 곳에 모아 관리하는 데이터 저장소RDB: Relational Database, 관계형 데이터베이스. 데이터를 행과 열로 이루어진 테이블로 관리.oracle, mysql, sql 서버 등SQL: Structured Query Language, 데이터 검색 언어.NoSQL: Not only SQL, 비정형 데이터를 다루는 방식아이피와 포트아이피: 인터넷에서 서로를 식별하고 통신하기 위한 주소포트: 서버에서 운용되고 있는 서비스를 구분하기 위한 번호https:// → 서버의 443번 포트를 사용하기 ..