- Spring 이란?2024-01-03 10:18:53너무나 당연하게 쓰고 있던 Spring에 대해서 궁금증이 생겼기에 이 글을 쓴다. Spring framework란? 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로 엔터프라이즈급 애플리케이션 개발을 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션 경량 컨테이너로 자바 객체를 담고 직접 관리 엔터프라이즈급 개발 환경 대규모 데이터 처리와 트랜잭션이 동시에 여러 사용자로부터 행해지는 매우 큰 규모의 환경 객체의 생성 및 소멸, 라이프사이클을 관리하며 언제든 spring 컨테이너로부터 필요한 객체를 가져와 사용하기 때문에 spring은 IOC(Inversion Of Control) 기반의 Framework임을 알 수 있다 IOC Spring에서는 일반적인 Java 객체를 new로 생성하여 개발자가 ..
- [Spring Boot] Spring Security & OAuth2.0 사용 - 소셜 로그인 기능 구현하기12023-11-08 22:42:20오늘은 Spring Security 와 OAuth 2.0 으로 소셜 로그인을 구현해 봤는데 각각 뭘 의미하는지와 버전이 달라지면서 바뀐 부분들을 설명하겠다. 0. 환경 설정 Gradle 사용 plugins { id 'java' id 'org.springframework.boot' version '3.1.2' id 'io.spring.dependency-management' version '1.1.2' } group = 'jpabook' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } 1. 구글 서비스 등록 구글 클라우드 플랫폼 주소로 이동하여 프로젝트를 생성해야 하는데 이 과정은 여기를 참고하면 되겠다. 2-1. application-oau..
- [Spring] Spring Security 기본 개념(JWT / OAuth 2.0 / 동작방식 / 구성요소)2023-11-06 23:49:25이번엔 Spring Security의 기본 개념에 대해 공부했다. 1. JWT(Jason Web Token) 유저 인증, 식별하기 위한 토큰 기반의 인증에 쓰인다. - 구조 헤더(Header) 타입(Type) : 항상 JWT 알고리즘(alg) 페이로드 (Payload) : 사용자 정보 담김 서명 (Verify Signature) - 동작 방식 클라이언트 측에서부터 서버 측으로 JWT 받음 서버 측의 비밀 값과 JWT의 헤더, 페이로드를 alg에 넣고 서명값과 같은지 확인 같다면 유저에 인가한다. - 특징 시간에 따라 상태 값이 달라지지 않음(Stateless) 서버가 통제하지 않아 여러 사용자가 같은 JWT로 여러 요청 보내도 추적 불가능 - 종류 Access Token : 인가받았을 때 쓰는 수명이 짧..
- [Spring] EntityNotFoundException 이란?2023-11-02 01:50:011. 사용 예시 이번 글은 Spring에서 데이터베이스에 있는 데이터를 조회하는 경우 해당 데이터가 없을 때 발생시킬 예외 중 하나를 소개하겠다. 전에는 존재하지 않는 데이터를 조회하는 예외처리를 할 때마다 NoSuchElementExeption만 사용했었다. 위와 같은 경우에서 예외를 처리하는 권장 방법 중 하나는 커스텀 예외를 발생시키는 것이다. 2. 예외 발생 방법 Spring.io를 보면, 이런 경우에 대한 권장 커스텀 예외가 바로 EntityNotFoundException이다. 이 예외는 일반적으로 데이터베이스에서 리소스를 찾을 수 없을 때 사용된다. 이 예외는 java.persistence 패키지의 일부로서 쿼리에서 결과가 없을 때 레포지토리 레이어에서 발생시킬 수 있다. Spring Data..
- [JPA] 매핑 어노테이션2023-10-20 16:10:57오늘은 엔티티 내 필드에서 매핑컬럼에 대한 특성을 지정할 수 있는 매핑 어노테이션을 알아보겠다. @Column @Enumerated @Temporal @Lob @Transient @Column name @Column(name = "컬럼명") 필드와 매핑할 테이블의 컬럼명을 지정한다. 기본값 : 필드명 @Column private String name //컬럼명 : name(필드명) @Column(name="member_name") private String name //컬럼명 : member_name insertable, updatable 필드 값 수정 시 DB에 반영할 지 여부 @Column(insertable = false) : 엔티티 저장 시 이 필드는 DB에 저장하지 않는다. @Column(upd..
- [Spring Data JPA] 파라미터 바인딩2023-10-19 00:21:44포트폴리오 작성을 위해 웹을 만들고 있는 도중 JPA에 회원 이메일을 통해 회원을 조회하고 싶은데 @Query문에 파라미터를 어떤 식으로 작성하는지 몰라 찾아보다 알게 되었다. 스프링 데이터 JPA는 2가지 방법으로 파라미터 바인딩을 지원한다. 위치기반 이름기반 SELECT m FROM Member m WHERE m.email = ?0 //위치 기반 SELECT m FROM Member m WHERE m.email = :email //이름 기반 스프링 데이터 JPA의 기본값으로는 위치 기반 파라미터 바인딩이다. 이름 그대로 파라미터 순서로 바인딩하는 것이다. 코드 가독성과 유지보수를 위해 위치 기반보다는 이름 기반을 사용하게 한다. 위치 기반은 순서 실수가 있을 수 있기 때문이다. 공식 문서를 보면 알 ..