목록SPRING (12)
뜌릅

앱을 사용할 때 로그인 혹은 OAUTH 기반 로그인(구글, 네이버 등등)으로 로그인을 하게 됩니다. 이때 어떤 앱은 한번 로그인하면 계속 로그인이 유지되고, 어떤경우는 오랫동안 로그인을 하지 않다가 들어가면 로그인이 풀려있기도 합니다. 인증방식은 여러가지가 있습니다. 쌩으로 헤더에 유저정보를 담아서 보내기 세션과 쿠키 토큰 인증 방식 (OAUTH2 애도 사실 토큰인증) 그 인증방식중 하나(3번)가 오늘 알아볼 JWT 인증 방식입니다. (제일 많이 사용됨) 먼저 JWT는 무엇인지 알아보겠습니다. 구성요소 JWT는 "."으로 3가지 문자열로 구성되어 있습니다. {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6IiIsInJvbGUiOiJST0xF..

https://careerly.co.kr/comments/83898 조서희 / 주니어 자바 개발자를 위한 100가지 질문 1 | 커리어리 "주니어 자바 개발자를 위한 100가지 질문" 1편입니다. 주니어 자바 개발자를 위한 100가지 질문 (2)... careerly.co.kr 자바에서는 어떤지 잘 모르겠다.(아마 비슷할거라고 생각은 한다.) 그러면 코틀린에서 HashCode는 무엇일까? HashCode는 Data Class의 클래스 Body에서 아래의 사진처럼 override가 가능하게 되어있다. 그렇다면 hashCode는 무엇일까? 아래는 코틀린 정식 문서이다. 요약을 하자면 아래와 같다. 같은 Object에서 호출되는 hashCode()함수는 equals 함수에서 사용되는 정보들이 수정되지 않는 한..

https://careerly.co.kr/comments/83898 조서희 / 주니어 자바 개발자를 위한 100가지 질문 1 | 커리어리 "주니어 자바 개발자를 위한 100가지 질문" 1편입니다. 주니어 자바 개발자를 위한 100가지 질문 (2)... careerly.co.kr 나는 자바보다는 코틀린을 기반으로 스프링 코드를 짜고 있다. 우선 자바의 equals와 ==의 차이를 간단하게 살펴보니, ==는 객체의 값(근데 객체는 값으로 주소값을 갖고있으므로 사실 주소값 비교이다.), equals는 메소드가 비교하고자 하는 객체의 값을 비교하게 되는 것이다. 그렇다면 kotlin에서는 어떨까? (코틀린은 자바와는 다르게 작동한다.) kotlin에는 ==, ===, equals가 존재한다. String타입과 ..

https://careerly.co.kr/comments/83898 조서희 / 주니어 자바 개발자를 위한 100가지 질문 1 | 커리어리 "주니어 자바 개발자를 위한 100가지 질문" 1편입니다. 주니어 자바 개발자를 위한 100가지 질문 (2)... careerly.co.kr 오늘부터 Careerly에 올라왔었던, 질문 100가지를 작성해보기로 하였다. JVM이란 JVM은 Java Virtual Machine으로 자바 가상 머신의 줄임말입니다. JVM은 자바 어플리케이션을 바이트코드로 변환하고, OS에 상관없이 이식하기 쉽게, 바이트코드를 실행할 수 있게 합니다. 다시 말하면, 이 바이트코드들은 각 운영체제 맞는 실행코드로 변환되는 것이 아닌, .class라는 확장자를 가진 파일로 변환이 됩니다. 변환..

JMETER을 통해 부하테스트를 진행하기로 하였습니다. 우선 JMETER의 세팅방법부터 간단하게 설명하겠습니다. 다음과 같이 테스트 플랜을 설정합니다. 우선 쓰레드의 경우 15번 보낼것이기 때문에 아래와 같이 설정합니다. 이 경우 15개의 API 요청을 거의 동시에 요청한다고 볼수 있습니다. 저희 API 스웨거의 헤더에 맞게 HTTP HEADER MANAGER(JMETER)을 설정해 줍니다. HTTP REQUEST는 자동접수중 가장 쿼리가 오래걸리는 API을 이용하여 부하테스트를 진행해 보겠습니다. 대략 쿼리 하나당 5초에서 15초정도 걸립니다. 아래와 같이 REQUEST BODY와 SERVER NAME과 PORT NUMBER을 사용하시면 됩니다. (저는 로컬 환경이니 아래처럼 한거니 알아서 맞게 설정해..

히카리CP 설정값은 아래와 같이 설정을 합니다. @ConfigurationProperties("spring.datasource.hikari") 위의 ConfigruationProperties을 통해서 application.yml의 환경변수 값을 적용하고 있었습니다. 방법이 궁금하시다면, @ConfigurationProperties 어노테이션을 찾아보세요. 하지만 다음과 같이 적용이 되지 않는 상태입니다. 이를 적용하기 위해서는 아래의 그림과 같이 LazyConnectionDataSourceProxy을 안쓰고 직접 생성한 dataSource을 사용하면 됩니다.(위의 사진과 비교하면 return값이 바뀌었습니다. 비교해보세요!) 어차피 HikariCp 특성상, 필요할때 Connection을 Pool에서 던져..

https://twocastle9.tistory.com/64 해당 문서를 먼저 보고 오시는걸 강력 추천합니다. 아니면 이해 못합니다. 해당 문서에서의 에러를 좀더 설명하자면, 위의 에러가 왜 실패하였는지 궁금할 것입니다. attributes: {timestamp=Fri Jun 16 14:45:49 KST 2023, status=500, error=Internal Server Error, message=could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement, path=/rece..

😀 부하테스트란(Load Test) 부하 테스트는 성능 테스트의 한 종류입니다. 우리가 정한 미리 결정된 부하 상태에서의 시스템 성능을 평가하는 테스트입니다. 특정 상황에서의 성능 병목 현상을 발견하고 해결하는데에 도움을 줍니다. 부하테스트의 일반적인 수행방법 부하테스트의 환경 구축 부하 테스트 시나리오 정의 고객 접수 api에서 CP exception error 발생! 문제 원인이 Maximum Connection개수가 부족해서라고 판단. 실제로 그런지 확인 기존 값은 connection 개수가 최대 10개였고, 따라서 11개의 쓰레드로 동시 실행 정의된 테스트 시나리오에 따라 실행 deadlock 발생시 connection의 개수가 모자람을 확인 가능 다른 error 발생시 다른 원인을 생각해 볼 수..

용도: 데이터를 삭제시켜야 하지만 동시에 보존이 필요할 때 FK등이 걸려 있어서 기존 데이터에 영향이 갈 수 있는 경우 로그처럼 남겨둬야 하는 경우 주의: 이 기능을 사용하기 전에, 정말로 데이터의 삭제를 구현하는 것이 목적인지 검토해보세요. 삭제된 데이터를 접근하는 경우가 있다면, 그건 사실 삭제가 아니라 “숨기기” 또는 “상태변화”일 가능성이 높습니다. 오로지 개발자만이 삭제된 데이터를 복구할 수 있게 됩니다. 직접 DB에 접근하여 수정해야 합니다. delete_at 컬럼을 활용하는 로직을 작성하지 마세요. 만약 작성해야 한다면 soft delete를 기능의 의미대로 사용하지 않는 것입니다. 단순히 상태 변화를 의미하는 것이면 상태 컬럼을 고치는 로직을 따로 작성하세요. Join으로 걸려있는 경우에도..

Servlet 서블릿이란, 자바를 사용해서 웹을 만들기 위해 필요한 기술입니다. 클라이언트의 요청에 따른 결과를 다시 전송해야 하는데, 이러한 역할을 해주는 자바 프로그램입니다. Sevlet의 특징 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트 html을 사용하여 요청에 응답한다. Java Thread을 이용하여 동작한다. MVC패턴에서 Controller로 이용됩니다. 정확히는 @Controller어노테이션을 붙이게 되면, 스프링 부트 내부에서 사용하는 Dispatcher Servlet이 클라이언트 요청을 받아 적절한 컨트롤러로 라우팅하는 역할을 합니다. jakarta(javax).servlet.http.HttpServlet 클래스를 상속받습니다. 동적인 페이지를 제공하기 위해 웹..