전체 글 34

[QueryDSL] 정리 및 spring boot에서 사용법

Spring JPA 이커머스 프로젝트를 진행하면서 jpa를 사용하였다. 덕분에 sql을 직접 작성하지 않고 메서드를 통해서 쿼리를 구현하였지만,, OneToMany 관계를 가지는 구조에서 직접적인 연관관계가 없다면, many 쪽에서 one의 엔티티를 가져오는것이 번거롭다. Product : 나이키 에어포스 ProductItem : 260 ProductItem_status : 품절 status로부터 해당 product를 가져오기 위해서는 jpa 로는 안되고 엔티티 내부를 들어가서 비교문과 반복문을 통해 가져와야한다. 또한 가져오는 과정에서 모든 필드가 넘어오므로 원하는 필드만 가져오는것도 불가능하다. Dto를 따로 만들어 반환한 이유이다. @Query를 이용한 JPQL sql문을 직접 쓰는거라 오타날 확률..

SPRING 2024.01.21

Swagger 사용방법(feat.springdoc)

Swagger swagger는 api 문서 작업을 대신해주는 OpenAPI Specification 프레임워크이다. 백엔드와 프론트엔드가 소통하기 위해서는 restfulAPI로 작성한 코드를 정리한 문서가 필요하다. /user/signup : user 회원가입 /user/login : user 로그인 /user/mypage : user 마이페이지 등등 api 스펙들을 적어놓는다. 이런식으로 수동으로 문서 작업하는것은 시간도 잡아먹고 실수할 우려도 있다. (사실 귀찮다) swagger는 이러한 문서 작업을 자동으로 대신 해주고 해당 문서를 /swagger-ui/ 로 접근하면 문서 페이지를 그려준다. 또한 포스트맨에서 했던 요청 테스트도 swagger ui 페이지를 통해 가능하다. 어떻게 대신 해주는거지 스..

SPRING 2023.12.30

맥북 M1 모니터 연결하는 방법

M1 pro 13인치를 사용중인데,, 너무 작아서 불편하다. 그래서 모니터를 연결하기로 결심! 준비물 1. 모니터 전원을 연결할 dc in port 2. 모니터와 맥북을 연결할 c type to hdmi hdmi는 여기서 샀다. 허브 사용하지 말고 바로 꽂아야 잘된다. https://www.coupang.com/vp/products/7546230716?itemId=19849013539&vendorItemId=85400705149&q=type+c+to+hdmi&itemsCount=36&searchId=eefa8aa5008744e7abb1a97237caa6ec&rank=22&isAddedCart= 코드웨이 USB-C to HDMI MHL 미러링 케이블 COUPANG www.coupang.com 연결 세팅

MAC 2023.12.29

3. 인증 관련 구조와 내부 동작

Structure 일단 인증관련 전체적인 구조는 다음과 같다. 1. 필터를 통해 들어온 요청이 아직 인증되지 않은 것이라면 2. 인증을 시작한다. 3. 또는 요청이 AccessDeniedException이라면 접근을 거부한다. 인증 과정을 살펴보자 SecurityContextHolder 사용자 정보인 principal을 Authentication에서 관리하고 Authentication은 SecurityContext가 관리하고 SecurityContext는 SecurityContextHolder가 관리한다. SecurityContextHolder의 주요한 역할은 SecurityContext를 스레드와 연결시켜서 Authentication을 저장하도록 하는것이다. SecurityContextHolder의 T..

SPRING 2023.12.23

2. Spring Security란?

Spring Security 스프링에서의 인증방식 Credential 기반 - Principal(접근 주체): 보호받는 Resource에 접근하는 대상 (id) - Credential(비밀번호): Resource에 접근하는 대상의 비밀번호 (pw) Spring Security는 스프링 기반의 어플리케이션의 인증과 인가를 담당하는 프레임워크이다. 매 요청마다 유저에 대한 Authentication 과 Authorization 를 검증한다. Filter를 이용하여 사용자의 요청 및 서버의 응답을 전후처리를 한다. 왜 굳이 Filter를 쓸까? Interceptor로도 할 수 있는데 인증되지 않은 사용자의 요청이라면 스프링 컨테이너로 접근하기 전에 웹 컨테이너에서 거르른 것이 더 효율적이기 때문이다. Spri..

SPRING 2023.12.23

1. 인증 방법 - 쿠키,세션,jwt

인증 유저가 서비스의 회원임을 확인하는 것을 인증(Authentication) 이라고 한다. 인증된 유저만이 특정 기능을 사용하도록 하는것을 인가(Authorization) 라고 한다. 유저가 회원가입을하고, 로그인을 해서 자신이 관심있는 회사를 조회한다고 가정해보자. 로그인된 유저만이 관심회사 조회 기능을 쓸수 있다고 한다. 유저를 인증 한 뒤, 해당 기능에 대해 유저를 인가하면 될것같다. 그렇다면 인증을 어떻게 해야할까? 아이디와 비밀번호를 생성해서 디비에 저장하고, 유저가 아이디와 비밀번호를 쳤을때 일치하면 보내주면 되지 않나? 웹 사이트는 HTTP 통신 위에서 동작한다. 따라서 웹 사이트 내의 모든 요청과 응답은 stateless하다. (서버에서 Client의 이전 상태를 기억못함.) -> 반복적..

SPRING 2023.12.23

Packaging Jar VS War

스프링부트에서 프로젝트를 세팅할때, Packaging를 Jar 또는 War로 선택할 수 있다. 여기서 Packaging란 무엇일까? Packaging 배포 & 배포를 위한 자바 응용 프로그램이다. 애플리케이션을 실행하는데 필요한 파일과 리소스를 구조화시켜 아카이브를 만드는 것을 패키징이라고 한다. 그래서 패키징 유형 이름도 Jar ( Java Archive) War (Web Application Archive) 인 것이다! Jar Java 어플리케이션이 동작하도록 자바 프로젝트를 압축한 파일이다. Java 리소스와 속성 파일 + 라이브러리 파일 JRE만으로도 실행 가능하다. 즉 별도의 웹서버 없어도 자바가 설치된 모든 시스템에서 실행가능하다는 뜻. War servlet / jsp 컨테이너에 배치 할 수 ..

SPRING 2023.12.07

빌드 도구 Maven VS Gradle

스프링부트에서 프로젝트를 세팅할때, build를 maven 또는 gradle로 선택할 수 있다. 여기서 build란 무엇일까? Build 개발자가 작성한 코드(.java)를 프로젝트에서 쓰이는 자원을 packaging하는 과정과 결과를 뜻한다. 빌드시 작업되는 것들은 다음과 같다. Processing - 종속성 다운로드 Compile - 소스코드를 바이너리 코드로 컴파일 Packaging - 바이너리 코드를 패키징 Testing - 테스트 실행 Distribution - 배포 그 결과는 jvm이나 톰캣과 같은 WAS 가 인식할 수 있어 실행할 수 있다. 빌드 도구는 애플리케이션을 생성하면서 필요한 라이브러리들을 자동으로 관리해주는 작업을 해주어 사용자가 관리할 필요없다. 빌드 툴로는 Maven, Grad..

SPRING 2023.12.07

자바,스프링,스프링부트 간단한 개념과 차이점

자바 순수 자바 프로젝트에서는 모든 동작을 내가 직접 코드로 짰다. 객체지향으로 프로그래밍하며 SOLID를 되도록 따르려 노력했다. 그러한 방향으로 짜도록 규칙을 정해주고, 틀을 제공해주는것이 바로 스프링 프레임워크이다. 프레임워크 프레임이란 틀을 말한다. 즉, 프레임 워크란 제공된 틀 안에서 일하도록 만들어진 프로그램이라고 생각하면 된다. 프레임워크는 여러기능을 가진 클래스와 라이브러리가 담겨있다. 따라서 개발자는 일일이 모든것을 개발하지 않고 제공된 것을 활용하기 때문에 편리하다. 프레임워크의 종류는 언어마다 다르다. | 언어 | 종류 | |---|---| |java | spring | |javascript | AngularJS, React | | python | Django,Flask | 나는 자바..

SPRING 2023.12.07

[플러그인] Excalidraw 내가 만든 그림 Library에 배포하기

옵시디언 플러그인 중 하나인 Excalidraw를 요즘 자주 사용하고 있다. 도형이 한정적이라, library에서 몇개 다운받긴 했는데, 뭔가 나도 그려서 library에 올려보고 싶었다. ㅎㅎ.. 1. 도형그리기 라이브러리에 추가하고 싶은 도형들을 그린다. 2. 라이브러리에 추가하기 한 아이템을 선택한 후 라이브러리 버튼을 클릭한다. +버튼을 누르면 일단 개인 라이브러리에 저장이 된다. 모든 아이템들을 개인라이브러리에 추가한 후, 체크하면 메뉴를 선택할 수 있다. 메뉴에서 publish버튼을 누르면된다. 3. 배포하기 각각의 아이템이름, 라이브러리 이름과 설명, 이름을 필수적으로 적고 깃허브나 트위터 계정 등등은 선택사항이다. submit 버튼을 누르면 제출되고, 해당 라이브러리는 excalidraw ..

Obsidian 2023.12.06