전체 글 73

JWT 인증과 Session 인증의 복합 사용!

1. 소개: JWT와 세션 인증의 기본 개념 및 장단점 JWT (JSON Web Token) 인증 기본 개념: JSON 객체를 사용하여 사용자의 정보를 안전하게 전송하는 방법입니다. 토큰 자체에 정보를 담고 있어 별도의 인증 저장소가 필요 없습니다. 구성 요소: Header: 토큰의 유형(JWT)과 해싱 알고리즘 정보(HS256, RS256 등)를 담습니다. Payload: 사용자 식별자, 발행자, 유효 기간 등의 클레임(claim) 정보를 담습니다. Signature: 서버의 비밀키로 해시하여 생성된 서명으로, 토큰의 무결성과 유효성을 보장합니다. 장점: Stateless: 서버가 사용자의 상태를 저장하지 않기 때문에 서버 부하를 줄일 수 있습니다. 확장성: 다수의 서버나 다양한 도메인 간 통신에 유용..

Spring boot와 JPA , react 를 이용한 Google Oauth2 구현

소개 Google OAuth는 사용자가 자신의 Google 계정을 사용하여 다른 애플리케이션에 로그인할 수 있게 해주는 인증 시스템입니다. 사용자가 애플리케이션에서 Google 로그인을 하면, Google은 사용자의 신원을 확인하고 애플리케이션에 필요한 정보를 제공합니다. 이 과정은 아래와 같이 진행됩니다. 사용자(프론트엔드): 사용자는 웹 브라우저 상의 프론트엔드에서 Google 로그인 버튼을 클릭합니다. Google 인증 페이지(구글 서비스): 프론트엔드는 사용자를 Google 로그인 페이지로 리디렉션합니다. 사용자는 자신의 Google 계정으로 로그인하고 애플리케이션에 특정 권한을 부여합니다. 인증 코드(구글 서비스): Google 로그인 성공 후 Google은 사용자를 프론트엔드로 리디렉션하며 인..

토비의 스프링 | 8장 스프링이란 무엇인가

스프링의 정의 "자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크" 애플리케이션 프레임워크 범용성: 스프링은 특정 계층(예: MVC, ORM)에 국한되지 않고, 애플리케이션의 전 영역을 아우르는 범용적인 프레임워크입니다. 웹 개발, 데이터 접근, 보안, 트랜잭션 관리 등 다양한 영역에서 활용될 수 있으며, 개발자는 필요에 따라 선택적으로 기능을 사용할 수 있습니다. IoC(Inversion of Control, 제어의 역전): IoC는 스프링의 핵심 원리입니다. 기존의 프로그래밍에서 객체의 생성과 생명 주기를 개발자가 관리하는 것과 달리, 스프링에서는 프레임워크가 이러한 제어를 담당합니다. 이는 객체의 생성과 의존성 주입을 스프링 컨테이너가 관리하게 함으로써 개발자가 비즈니스..

스프링 2024.01.10

2023 우물 안 개구리의 회고록

성장을 위한 회고록!!! 기간: 2022년 말 ~ 2023년 2월 역할: 백엔드 개발자 선배의 제안과 새로운 도전: 이전까지 코딩테스트와 학교 수업에 집중하던 중, 선배의 제안으로 Spring Boot와 JPA를 사용한 백엔드 개발에 참여하게 되었습니다. 이는 새로운 도전이었고, 처음 접하는 기술에 대한 호기심과 열정으로 프로젝트에 임했습니다. 팀워크와 협업: 밤을 새우며 팀원들과 함께 열심히 개발하는 과정에서 커뮤니케이션의 중요성과 팀 프로젝트의 가치를 깨달았습니다. UML 작성과 테이블 구조등 프로젝트 전 요구사항 정리와 같은 설계에도 배우게 되었고, 깃(Git) 사용 능력도 향상되었습니다. 기술적 성장과 반성: 프로젝트를 통해 다양한 기술을 경험했지만, 개발을 진행하면서 '어떻게'보다는 '왜'라는 ..

회고 2024.01.08

스프링 핵심 AOP!

AOP의 목적과 중요성 AOP: 프로그래밍에서 공통적인 관심사를 핵심 비즈니스 로직으로부터 분리하여 모듈화하는 프로그래밍 패러다임입니다. 이는 코드 중복을 줄이고 유지보수를 용이하게 합니다. 코드 중복 감소: 로깅, 보안, 트랜잭션 관리 등과 같은 반복적인 코드를 중앙화함으로써, 코드 중복을 크게 줄일 수 있습니다. 유지보수의 용이성: 관심사가 분리되어 있기 때문에, 수정이 필요한 경우 한 곳에서만 변경하면 전체 시스템에 적용됩니다. 확장성 향상: 새로운 기능이나 로직을 추가할 때 기존 코드를 변경하지 않고도 확장할 수 있습니다. 가독성 및 유지보수 향상: 핵심 로직과 부가 기능이 분리되어 있어 코드의 가독성이 향상되고, 유지보수가 용이해집니다. 핵심 개념: Aspect 정의: 여러 객체에 걸쳐있는 횡단..

스프링 2024.01.03

DataAccessException이란?

스프링에서의 데이터 액세스 예외 처리의 진화 과거의 JDBC 예외 처리와 그 문제점 과거의 자바 데이터베이스 애플리케이션은 JDBC API를 사용하여 직접 데이터베이스와 상호작용했습니다. 이러한 접근 방식은 몇 가지 중요한 문제를 가지고 있었습니다. 체크 예외 처리의 강제성: 과거의 자바 데이터베이스 애플리케이션은 JDBC API를 사용하여 직접 데이터베이스와 상호작용했습니다. 이 접근법은 SQLException과 같은 체크 예외를 던질 가능성이 높았습니다. 이로 인해 모든 데이터베이스 작업에 대한 강제적인 예외 처리 코드 작성이 요구되었습니다. 개발자가 예외 처리 코드를 작성하지 않으면 컴파일 에러가 발생하는 부담이 있었습니다. 데이터베이스 종속성: 각 데이터베이스 벤더는 고유한 에러 코드와 메시지를 ..

스프링 2023.12.29

빈(Bean)을 등록하는 여러가지 방법!

개요 스프링 빈이란? 스프링 프레임워크를 사용하면서, 우리는 @Bean, @Configuration, @ComponentScan, @SpringBootApplication과 같이 다양한 빈 등록 및 설정 방식을 마주치게 됩니다. 이러한 다양성이 혼란스러워 정리하게 되었습니다. 이 블로그 포스트에서는 스프링의 빈 등록 및 설정 방식이 왜 그리고 어떻게 진화해 왔는지 탐구합니다. 다양한 빈 등록 설정 방법. 1. XML 기반 설정 (2003년, Spring Framework 1.0) 상세 설명: 초기 Spring에서는 XML 파일을 사용하여 빈의 정의 및 의존성을 설정하였습니다. 각 빈은 태그로 표현되며, 그 안에서 의존성 주입을 위한 태그를 사용합니다. 변화의 배경: 이 방식은 중앙 집중적으로 빈을 관리할..

스프링 2023.12.20

스프링 빈이란?

1. 빈(Bean) 정의 및 역할 정의: 스프링 빈은 스프링 IoC 컨테이너에 의해 관리되는 객체입니다. 역할: 빈은 애플리케이션의 비즈니스 로직, 데이터 액세스, 웹 요청 처리 등을 담당합니다. 생명주기 생성: 스프링 컨테이너는 설정 정보를 바탕으로 빈 인스턴스를 생성합니다. 사용: 빈은 애플리케이션에 필요한 기능을 수행합니다. 소멸: 애플리케이션 종료 시 빈 인스턴스는 스프링 컨테이너에 의해 소멸됩니다. 스코프 1. 싱글톤(Singleton) 스코프 정의: 기본 스코프로 스프링 IoC 컨테이너당 빈의 단 하나의 인스턴스만을 생성합니다. 사용 시기: 애플리케이션 전반에 걸쳐 공유되는 상태가 없는 서비스, 유틸리티 클래스 등에 적합합니다. 주의점: 스레드 안전성: 싱글톤 빈은 여러 스레드에 의해 동시에 ..

스프링 2023.12.20

어댑터 패턴과 퍼사드 패턴

1. 어댑터 패턴 어댑터 패턴이란 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이이스로 변환하는 것으로 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와줍니다. 객체 어댑터 패턴 객체 어댑터 패턴은 구성을 사용한다. 이는 어댑터가 기존 클래스의 인스턴스를 내부적으로 가지고 있으며, 이 인스턴스를 통해 메서드를 호출한다. 객체 어댑터는 유연성을 가지고, 한 어댑터를 여러 다른 어댑터를 여러 다른 클래스와 연결하거나 동시에 여러 인터페이스를 구현할 수 있다. public class ObjectAdapter implements TargetInterface { private Adaptee adaptee; public ObjectAdapter(Adaptee adaptee)..

디자인 패턴 2023.11.24

[우아한 테크 코스]6기 프리코스 4주차 회고록

프리코스 4주차 회고록 우아한형제들의 개발자 양성 프로젝트, 우아한테크코스의 프리코스를 경험하게 된 것은 정말 뜻 깊은 시간이었습니다. 이 프리코스를 통해 많은 것을 배우고 성장하는 기회를 얻었습니다. 아래에는 이 경험에서 얻은 교훈과 느낀 점, 그리고 부족한 부분을 솔직하게 정리해보겠습니다. 🚀 기능 요구 사항 이번 미션은 이메일 형식의 기능 요구 사항입니다. 문제를 구현하는 데 필요한 요구사항과 배경지식은 이메일 내용에 전부 담겨있으니, 꼼꼼하게 확인하고 필요하다면 주어진 문제의 내용을 통해 유추하고 스스로 판단해 구현해 주시면 됩니다. 문제의 모든 내용은 충분히 검토되었으며, 출제 의도를 담은 내용임을 알려드립니다. 보낸 사람: 비즈니스팀 받는 사람: 개발팀 제목: 12월 이벤트를 위한 개발 요청 ..