전체보기

    JPA findAll() 정렬해서 가져오는법

    shopDataRepository.findAll(Sort.by(Sort.Direction.DESC, "clickMen")) JPA의 findAll은 기본적으로 Sort를 지원하고 있어서 findAll 내부에 정렬하는 코드를 입력해주면 된다. Sort.Direction.DESC는 내림차순 정렬이고 Sort.Direction.ASC는 오름차순 정렬이다. 그리고 정렬 기준이 될 컬럼명을 입력해주면 끝 !

    Spring _ 카카오 로그인 REST API 구현 OAuth2

    Spring _ 카카오 로그인 REST API 구현 OAuth2

    이 글을 읽기 전 아래를 필독하고, 구현까지 해놓았다면 이번 카카오 로그인은 누워서 떡먹기이다. 근데 누워서 떡먹기란 말은 사실 모순인데 누워서 떡 먹는 게 생각보다 힘들다. 아 잡소리 그만하고 진행해보도록 하자. Spring_구글 로그인 REST API 구현 OAuth2 새로 리팩터링 해서 구현한 CRUD를 블로그에 작성해야 하고,,🥹 다른 스택 사용한 것도 작성해야 하는데 언제 다 쓸지 벌써 막막하다.. 일단 최근에 OAuth2를 공부하면서 의존성을 추가해 구현하는 dev-chw.tistory.com REST API를 이용해 소셜 로그인을 진행할 때는 워낙 중복되는 부분이 많기 때문에 위 링크를 타서 꼭 읽어보고 구현을 해보면 좋을 것이다. 그러면 이번 장을 이해하는데 정말 쉽고 구현도 정말 간단하게..

    Spring _구글 로그인 REST API 구현 OAuth2

    Spring _구글 로그인 REST API 구현 OAuth2

    새로 리팩터링 해서 구현한 CRUD를 블로그에 작성해야 하고,,🥹 다른 스택 사용한 것도 작성해야 하는데 언제 다 쓸지 벌써 막막하다.. 일단 최근에 OAuth2를 공부하면서 의존성을 추가해 구현하는 방법을 사용하다가, 프로젝트를 진행하는 중 REST API를 많이 사용하다 보니 소셜 로그인 또한 REST 형식으로 구현하기 위해 방법을 뒤적뒤적하면서 공부하고 진행하던 프로젝트에 도입해봤다. 크게 어려운 부분은 없기 때문에 누구나 소셜 로그인을 REST 형식으로 구현하기 어렵지 않을 것이다. 첫 번째로 클라이언트가 구글 로그인 창으로 이동되게끔 Controller에서 url을 redirect 해줄 것이다. 그전에, 구글 OAuth API 사용을 위해 google cloud에서 환경 설정해주어야 한다. [S..

    JpaRepository에서 Optional 객체에 담긴 정보 가져오기

    JpaRepository에서 Optional 객체에 담긴 정보 가져오기

    개발을 시작하기 얼마 안됐을때쯤 JPA를 통해 Optional 객체로 사용자의 정보를 가져와서 리스트나 아니면 다른 값으로 Response 해주는걸 하다가 의문점이 들었다. 그럼 원하는 정보를 하나만 딱 뽑아서 가져오는건 어떻게하지..? 이것만 쉽게 한다면 세상 뭐든걸 다 개발할 수 있을 것 같아서 바로 찾아봤다. 사실 그렇게 어려운건 아니다. Optional 클래스에 대한 지식이 어느정도만 있어도 충분히 가능한 수준이지만 자린이였던 내가 그런걸 알리가 없다. 그렇기 때문에 바로 다시 개념 공부,, 아래는 필자가 생각하기에 간단한 개념정리가 잘되어있다고 생각한 블로그이다. Optional 1. Optional 소개 catsbi.oopy.io 흔히 우리가 자주 사용하는 Jpa에서 findById를 하였을때..

    Spring 개발할때의 패키지 구조 🙂

    Spring 개발할때의 패키지 구조 🙂

    ! 패키지 구조를 구성할때 가장 대표되는 2가지 ! Layer vs Domain 🤔 /* Layer 구조 Layer : controller, Service, dto 같은 아키텍트적인 계층형 기반으로 구성된 패키지 구조 장점 -> 프로젝트에 이해가 낮아도 전체적인 구조를 빠르게 파악가능 -> 작성하고자 하는 계층이 명확할 경우 빠르게 개발이 가능 단점 -> 각 레이어별로 수십개의 클래스들이 존재하여 코드 파악이 어려움 -> Layer를 기준으로 분리했기 때문에 코드의 응집력이 떨어짐 */ /* Domain 구조 Domain : 도메인들이 최상단 루트로 구성된 패키지 구조 장점 -> 관련된 코드들이 응집해 있음 -> 디렉토리 구조를 통해 도메인을 이해할 수 있음 단점 -> 도메인 지식 없이 이해하기 어려움 ..

    인텔리제이로 Spring을 개발할때 TIP !

    인텔리제이로 Spring을 개발할때 TIP !

    플러그인 1. CSV : CSV 파일을 적극적으로 활용하자 - 실무에서 자주 사용되는 플러그인, 대량 등록/ 타 팀에게 특정 데이터를 전달해줄때 효율적으로 사용 가능 2. Git Toolbox : Git에 도움을 주는 플러그인 - 코드 라인에 마지막 Commit 이력이 출력됨, 주석처럼 사용할 수 있다. 3. JPA Buddy : JPA가 익숙치 않다면 사용 추천 4. String Manipulation : - String, 멀티 드래그 같은 입력에 관련해 막강한 편의기능을 지원해줌 편의기능 command + E : 최근 변경 파일 목록 command + shift + A : 액션 검색 기능 command + control + G : 같은 네임 멀티 라인 복사, 편집 option option + 아래 방..

    uses unchecked or unsafe operations 에러 해결

    uses unchecked or unsafe operations 에러 해결

    Java5 부터 생긴 에러라고 한다, 컴파일이 정상적으로 실행되며 서버도 정상적으로 가동이 되지만 개발할때 이러한 점은 눈엣가시이기 때문에 해결하기 위해 또 뒤적뒤적 찾아봤다. 원인 : 제네릭 타입 클래스를 선언할 때 자료형이 명시되지 않았을 때 발생한다, 주로 List,Map 등을 사용할때 자주 마주칠 수 있다. 나의 경우에는 위와같이 HttpEntity를 생성해줄때 정확히 명시해주지 않아, operation이 안전하지 않다는 오류가 난 것이다. 아래는 해결

    한국대학생IT경영학회_큐시즘 합격후기

    한국대학생IT경영학회_큐시즘 합격후기

    본 글은 PC에 최적화 되어있습니다. ( 나중에 쓸려다가 결국 못 참았다... ) 사실 이번 연도의 내 최대 목표는 KUSTIMS이라는 대외 동아리에 들어가는거나 다름없었다. 사실상 마지막이다 보니 조금 더 간절했었던 것 같은데 운 좋게 합격하게 되었다, 정말 유명한 IT 경영 동아리이고 지인을 통해 많이 보고 들어왔기 때문에 정말 욕심도 컸었는데, 그러다 보니 이번 연도에는 남는 시간을 잘 짜서 큐시즘에 합격하기 위해 꽤 공부를 했다(...) 요즘에는 팀 프로젝트, 개인 프로젝트를 한 번에 진행하다 보니 블로그를 쓸 시간이 없어서 써야 할 것이 많이 밀렸다. 하지만 다 제쳐두고 이걸 왜 먼저 쓰냐면 그냥 너무 좋아서 🥹 큐시즘은 대학생이라면 2/4 면제 상관없이 지원 가능하며 기본적인 사전 지식이 없어..

    예외 처리 _ Custom Exception 만들기

    예외 처리 _ Custom Exception 만들기

    개발을 하다보면 정말 수많은 Exception을 만나게 된다. 그러면 우리는 항상 구글링을 통해, 또는 코드를 뒤적뒤적하다가 Exception을 해결하곤 한다. 근데 이러한 Exception을 사용자가 마주했다면? 그렇다면 분명히 제대로 설명이 필요할 것 이다. 이며 표준 명시된 예외처리가 나간다고 하면 우리의 API를 사용하는 유저들은 불친절한 에러에 당장 회원탈퇴를 누르고 말 것이다. 그렇다면 서버에서는 어떻게 해야 사용자들이 잘못된 방식, 접근을 하였을 경우 Exception을 어떻게 처리해주면 좋을까? 방법은 Exception을 Custom 해주면 된다. 쉽게 말해 우리가 직접 예외처리를 만들어 주면 된다. 만약 사용자가 아이디 또는 비밀번호를 잘못 입력하여 Exception을 마주했다고 했을때 ..

    JWT 간단한 개념 정리

    JWT 간단한 개념 정리

    JWT는 유저를 검증하고 식별하는 Token 기반의 인증 기법으로 서버가 아닌 클라이언트에게 저장이 된다. 구성으로는 헤더, 페이로드, 시그니처로 3개의 부분으로 구성되어 있으며 RFC7519로 지정되어있다. 헤더는 시그니처를 해싱하기 위한 알고리즘 정보가 담겨있으며, 페이로드는 서버와 클라이언트가 주고받는 시스템에서 실제로 사용될 정보에 대한 내용을 담고있다. 시그니처는 토큰의 유효성 검증을 위한 문자열, 토큰이 유효한 토큰인지 검증할 수 있으며 이는 Bast64 Url-asfe Encode 이후 Header에 적용된 해시함수를 적용 ! 장점 - 중앙의 인증서버가 없어서 시스템 수평 확장 유리, 데이터 스토어에 대한 의존성 없음 - URL, COOKIE, HEADER 모두 사용 가능 단점 -payloa..