spring

스프링

[Spring] Github OAuth 2.0 + Jwt를 통해 로그인하기

들어가기에 앞서 프로젝트를 진행도중 Github OAuth 2.0을 도입하고자 처음부터 마음먹었다. 그런데 OAuth가 처음이라 개념이 너무 헷갈리기도 했고 Github OAuth2.0을 대상으로 커스텀한 글이 많이 적어 시간이 많이 오래걸렸다. 다른 글들을 많이 참고하고 비슷한 부분이 많지만 그래도 Github로 한 것은 없기에 글을 써봅니다. https://velog.io/@jkijki12/Spring-Boot-OAuth2-JWT-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EB%A6%AC%EA%B8%B0 해당글을 참고해서 쓴 글입니다!! OAuth 구조에 대한 많은 의견이 있지만 저는 이렇게 구현하기로 했습니다. 많은 과정이있지만 간략하게 코드와, 주석, 설명으로 대체하겠습니다..

스프링

[Spring] TDD vs BDD 무엇인지알고 비교하기

TestCode를 작성하는 이유와 그 습관을 가져보기전에 정리를 한 번 하고 넘어가려고 합니다 TDD(Test Driven Development)란? 소프트웨어 개발 방법론 중 하나입니다 TDD는 개발자가 작성할 코드에 대한 테스트를 먼저 작성하고 그 뒤에 구현할 코드를 작성하는 방식입니다. TDD를 구현하는 팀은 개발에서 더 많은 시간이 걸릴수도 있습니다 하지만 시간이 오래걸린만큼 결함이 거의없는 경향이 있습니다 이처럼 TDD를 사용하면 코드 품질이 형샹되며 재사용이 가능한 코드가 생성 되겠죠? TDD의 사이클은 6단계로 나뉩니다 1. 테스트 케이스 작성: 요구 사항에 따라 자동화 된 테스트 사례를 작성합니다. 2. 모든 테스트 케이스를 실행: 현재 개발된 코드에서 자동화 된 테스트 케이스를 실행합니다..

스프링

[Spring] Slice를 이용하여 무한스크롤 구현하기

가장 중요한 것 Pagination이란 무엇인가 우리가 구현하기에 앞서 먼저 알고가야 하는 용어입니다 꼭 보세요!! 아니면 나중에 헷갈려요 만약 DB에 수만 수억가지 데이터들이 있는데 그 데이터들을 한 번에 불러와서 본다면 당연히 좋겠죠? 하지만 그렇다면 부하가 생길수 밖에 없습니다 무수히 많은 쿼리들 때문이죠 그래서 우리는 많은 어플에서 보듯이 무한스크롤등을 구현하는 곳이 많습니다 예를들어 오른쪽에 인스타그램 처럼요! 그렇다면 각각의 내용들을 어떻게 효율적으로 불러올까요? 먼저 많은 방식들이 있지만 저는 오늘 Slice이용한 무한스크롤을 다룰예정입니다 1. No offset 사용하기 No offset이란 말 그대로 페이지 번호가 없는 방식을 이야기합니다 기존에는 페이지번호(offset)와 페이지 사이즈..

스프링

[Spring] JWT Refresh Token 어디에 저장해야 할까? 그리고 꼭 저장해야 할까?

들어가기에 앞서 Refresh Token을 Cookie로 처리할까 고민 하던 도중 막상 왜 그렇게 저장하는지 자세히 모르고 사용했던 것 같다. 그래서 Jwt의 문제점들을 파악한 후에 써야 후에 고생하지 않을 거 같아서 문제점들을 알아보기로 했다 JWT의 문제점들 XSS(Cross Site Scripting) 웹 해킹 중 하나인 XSS는 게시판이나 웹 등에 JS와 같은 스크립트 코드를 삽입 해 개발자가 생각하지 못한 기능이 작동하도록 하는 공격 대부분의 웹 해킹 공격 기법과는 다르게 사용자-> 클라이언트를 대상으로한 공격이다 ex) 해커가 원하는 링크를 클릭하면 사용자가 가지고 있는 Cookie등을 사용하고 있는 서버로 Request를 보낸다 그러면 서버는 Response로 응답하기 때문에 해커가 원하는 ..

스프링/JPA

[Spring] JPA란 무엇인가

현 시대는 객체를 관계형 DB에 저장해서 관리를 합니다 그렇다면 관계형 DB안에 객체를 저장하려면 SQL을 이용하여 저장해야 합니다 SQL 중심의 개발이죠 Insert, Update, Select, Delete , Create..등등 1. 무한 반복, 지루한 코드 public class Member { private String memberId; private String name; ... } INSERT INTO MEMBER(MEMBER_ID, NAME) VALUES SELECT MEMBER_ID, NAME FROM MEMBER M UPDATE MEMBER SET ... 위 객체를 RDB(Relational Database, 관계형 데이터베이스) SQL을 이용하여 저장한 코드입니다 그런데 만약 DB구성..

스프링

[Spring] 자바의 대표적인 빌드 관리 도구 Maven vs Gradle 차이

안녕하세요 오늘은 Spring initializr로 스프링 부트 프로젝트를 생성할 때 선택하는 Maven과 Gradle의 차이를 알아보려고 합니다. 자 먼저 Maven과 Gradle의 차이를 알아보기 전에 우리는 빌드 관리 도구란 것이 무엇인지 알아볼 필요가 있습니다. 빌드 관리 도구란? 빌드 관리 도구란 프로젝트에서 필요한 파일들(xml. properties, jar)을 자동으로 인식하여 빌드해주는 도구입니다. 소스 코드를 컴파일, 테스트 ,정적분석을 통하여 실행가능한 어플리케이션으로 빌드해주죠 그리고 외부 라이브러리를 참조하여 자동으로 다운로드 및 업데이트의 관리해줍니다. 지금에서야 몇줄 추가하는 걸로 라이브러리를 자동으로 다운로드 해주지만 옛날에는 직접 라이브러리를 다운받아 수동으로 추가해줘야 했다..

스프링

[Spring] Spring이란 무엇인가?

오늘부터 스프링 공부를 하면서 만난 문제점들과, 앞으로 공부하는 내용을 공유하고자 합니다. 시작하기에 앞서 내가 뭘 공부하는지는 알아야 하기 때문에 스프링이 무엇인지 부터 알아봅시다 탄생 배경 엔터프라이즈급 시스템이 실패하는 이유 "복잡성을" 보고 해결하기 위해 나온 프레임워크입니다. Spring이 등장하기 전 EJB(Enterpirse JavaBeans)을 사용했는데 하나의 기능을 구현하기 위해 상속, 인터페이스 구현 등 의존도가 너무 커짐에 따라 로드 존슨의 예제코드등을 통해 만든 프레임워크이다. 2002년 로드 존슨이 EJB의 문제점을 지적하면서 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 보여주고, 30,000 라인 이상의 기반 기술 예제 코드를 선보이면서 시작되었다 이후 유겐 휠러와 얀..

Sleeg
'spring' 태그의 글 목록