본문 바로가기

Spring Boot

(16)
[Spring-Boot] Spring Security 스프링 시큐리티 Spring Security 란?Spring Security는 인증, 인가 그리고 데이터 보호 기능을 포함하여 웹 개발 과정에서 필수적인 사용자 관리 기능을 구현하는데 도움을 주는 스프링 하위 프레임워크입니다. 스프링 시큐리티는 필터 기반으로 동작한다.  🤗 인증과 인가인증(Authentication)은 사용자의 신원을 입증하는 과정입니다. 예를 들어 사용자가 사이트에 로그인을 할 때 누구인지 확인하는 과정을 인증이라고 합니다.인가(Authorization)는 인증과는 다릅니다. 인가는 사이트의 특정 부분에 접근할 수 있는지 권한을 확인하는 작업입니다. ⭐ build.gradle  추가https://mvnrepository.com/   // Securityimplementation 'org.sprin..
[Spring-Boot] AOP개념 @Aspect Advisor AOP란?Aspect-Oriented Programming의 줄임말이다.AOP는 애플리케이션의 핵심 비즈니스 로직과 관련 없는 부가적인 기능들을 모듈화하여 코드의 증복성을 줄이고 유지보수성을 향상시키는 데에 주로 활용한다. AOP에서는 다양한 관점(Aspect)을 정의하고 이러한 관점들을 핵심 로직에 적용하는 방식으로 동작한다. 👿 Advisor 구성포인트컷(PointCut) : 어디에 부가 기능을 적용할지,  클래스와 매서드 이름으로 필터링 하는데 쉽게 말하면 어디 기능에 적용하지 정하는 곳 (필터 역할)어드바이스(Advice) : 프록시가 호출하는 부가 기능이다. 단순하게 프록시 로직이라 생각하면 된다. (부가 기능 로직 담당)어드바이저(Advisor) : 하나의 포인트컷과 하나의 어드바이스를 가지..
Spring-Boot @Transactional 트랜잭션 전파 🙀 트랜잭션 예시 회원이 쇼핑물에서 상품을 구매하고 결제를 할때 회원의 금액이 감소하지 않을 수 있고 회원이 금액이 감소는 하였는데 쇼핑물 측에서는 입금 처리가 되지 않는 문제 발생시 데이터를 전부 롤백 시켜 회원의 차감된 금액을 다시 돌려주게 한다.회원이 결제 버튼을 누름 => 트랜잭션 시작회원의 계좌에서 금액이 차감쇼핑물에서 해당 금액을 수신 및 주문 완료 처리 => 트랜잭션 종료🙉 Transaction 기본 방법Transaction은 2개 이상의 쿼리를 하나의 커넥션으로 묶어 DB에 전송하고, 이 과정에서 에러가 발생할 경우 자동으로 모든 과정을 원래대로 되돌려 놓습니다. 이러한 과정을 구현하기 위해 Transaction은 하나 이상의 쿼리를 처리할 때 동일한 Connection 객체를 공유하도..
Spring-Boot H2 데이터베이스 설정과 연결 🤔 H2 데이터베이스 란?H2 데이터베이스는 "Java"로 작성된 경량형 오픈소스 관계형 데이터베이스(RDMS) 관리 시스템입니다.서버(Server) 모드와 임베디드(Embedded) 모드의 인메모리 DB 기능을 지원하며 브라우저 기반의 콘솔모드를 이용할 수 있으며, 메모리 내에서 실행할 수 있어 빠르고 간편하게 사용할 수 있습니다.RDBMS는 DBMS에 Relational이 추가된 것으로 쉽게 말하자면 테이블 기반의 DBMS이다.DBMS는DataBase Management System으로 데이터베이스 관리 시스템이다.📌 H2 데이터베이스 다운로드H2 데이터베이스 공식 사이트에 접속 후 All Platforms 다운로드📌 파일 실행다운로드 파일을 압축을 풀고 cmd로 h2\bin 경로로 이동한 후 ..
Spring-Boot MyBatis 📌 MyBatis  Mybatis는 데이터베이스로부터 직접 SQL문으로 데이터를 가져오고 객체(Entity든지, DTO든지, VO든지)에 반영하여 사용하도록 해주는 데이터베이스 접근 프레임워크이다. MyBatis의 가장 매력적인 점은 SQL을 XML에 편리하게 작성할 수 있고 또 "동적 쿼리"를 매우 편리하게 작성할 수 있다는 점이다. 📒의존성 주입 build.gradle에 다음 의존 관계를 추가한다.//MyBatis 추가implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'📒 properties 설정 mybatis.type-aliases-package : 마이바티스에서 "타입 정보"를 사용할 때는 패키지 이름을 적어주어..
Spring-Boot Cookie Session 📌 쿠키 Cookie웹사이트를 방문할 때 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 조각이다.쿠키 종류영속 쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지세션 쿠키 : 만료 날짜를 생략하면 브라우저 종료시 까지만 유지쿠키 동작 방식 클라이언트가 페이지를 요청서버에서 쿠키를 생성HTTP 헤더에 쿠키를 포함 시켜 응답브라우저가 종료되어도 쿠키 만료 기간이 있다면 클라이언트에서 보관하고 있음같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄서버에서 쿠키를 읽어 이전 상태 정보를 변경 할 필요가 있을 때 쿠키를 업데이트 하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답📒쿠키 생성로그인에 성공하면 쿠키를 생성하고 HttpServletResponse 에 담는다. 쿠키 이름은 me..
Spring-Boot Interceptor 인터셉터 Interceptor 란?스프링 인터셉터는 스프링 MVC가 제공하는 기술이다스프링부트에서 인터셉터는 웹 애플리케이션에서 요청과 응답을 처리하는 중간 단계에서 사용된다. 인터셉터는 특정 URI 패턴에 대한 요청을 가로채어, 컨트롤러가 처리하기 전후에 추가적인 작업을 더욱 효율적으로 할 수 있게 해 준다.1. 스프링 인터셉터 흐름스프링 인터셉터는 디스패처 서블릿과 컨트롤러 사이에서 컨트롤러 호출 직전에 호출 된다.HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러스프링 인터셉터는 체인으로 구성되는데, 중간에 인터셉터를 자유롭게 추가할 수 있다. 예를 들어서 로그를 남기는 인터 셉터를 먼저 적용하고, 그 다음에 로그인 여부를 체크하는 인터셉터를 만들 수 있다.HTTP..
Spring-Boot Bean validationn Bean Validation 이란? 먼저 Bean Validation은 특정한 구현체가 아니라 Bean Validation 2.0(JSR-380)이라는 기술 표준이다. 쉽게 이야 기해서 검증 애노테이션과 여러 인터페이스의 모음이다. Bean Validation을 잘 활용하면, 애노테이션 하나로 검증 로직을 매우 편리하게 적용할 수 있다. 1. validation 의존성 주입 build.gradle 에 의존관계를 추가하면 라이브러리가 추가 된다implementation 'org.springframework.boot:spring-boot-starter-validation' 2. 테스트 코드 작성@Datapublic class Item { private Long id; // @NotBl..