spring 4

Spring MVC구조 - 내부HTTP요청처리과정

개요 HTTP Request가 Spring에 들어왔을때 처리되는 과정과 순서를 정리한다. 순서 HTTP요청 → Filter(설정되어있는경우) → DispatcherServlet → HandlerMapping → Controller(service포함하는 비즈니스로직) → DispatcherServlet → HTTP응답 클라이언트에서 HTTP요청을 보낸다 필터가 설정되어 있는경우에만 서블릿 필터가 실행된다 WAS에서 HTTP요청을 기반으로 HttpServletRequest, HttpServletResponse객체를 생성하여 DispatcherServlet에게 전달한다. DispatcherServlet은 HandlerMapping에게 요청을 처리할 Controller(Handler)를 찾도록 지시한다. Han..

spring 2022.05.24

Spring Boot @Transactional

정의 스프링에서 어노테이션으로 선언적 트랜잭션 방식으로 트랜잭션을 처리하는것을 말한다. 사용 클래스, 인터페이스, 메소드에 사용할 수 있으면 메소드에 가장 가까운 어노테이션이 우선순위를 가진다. 어노테이션이 적용된 범위에서 트랜잭션 기능이 포함된 프록시 객체가 생성되어 자동으로 commit, rollback을 진행해준다. 이 프록시 객체는 @Transactional이 포함된 메소드가 호출 될 경우 PlatformTransactionManager를 사용하여 트랜잭션을 시작하고 commit, rollback을 진행해준다. 주의해야할점 - 적용범위 문제 상위메소드에서 하위메소드를 호출하는 경우, 하위메소드에서만 @Transactional을 선언하여 상위메소드에서 하위메소드시 호출시 @Transactional이..

spring 2022.05.24

Spring Boot사용시 Gradle Option구성요소

spring boot사용시 흔히 사용하는 gradle option에 대해서 살펴보고 알아봤다. 정의 gradle은 gradle을 위한 전용언어를 사용한다. groovy라는 언어를 기반으로 하는 DSL언어를 사용한다. DSL - Domain - Specific Languages : 도메인고유언어. 특정한 용도에 한정된 언어. 구성요소 build.gradle 빌드작업에 필요한 기본설정, 동작을 정의하고 의존성을 관리해주는 파일 plugins 해당 블록 안에 프로젝트 빌드에 필요한 플러그인을 작성하여 지정할 수 있다. 특정 플러그인을 추가하면 gradle task에 빌드 관련하여 수행할 수 있는 작업들이 추가된다. ( ex> java플러그인을 추가하면 compileJava task가 추가된다) build.gr..

spring 2022.04.14

spring security + jwt loadUserByUsername에서 엉뚱한 값을 받는다

개인기록용 spring security+jwt토큰 활용하여 api서버구성하였음. 프론트는 리액트에서 인터셉터에 JWT토큰값 따로 가지고 있다가 API서버로 요청보낼때마다 토큰보내는 상황. 초기로그인시에는 loadUserByUsername메소드 호출시 입력한 유저ID값으로 정상적으로 동작했는데 그 이후에 뭐 요청할때마다 loadUserByUsername에 유저ID값을 받는게 아니라 DB의 ID값을 받아서 제대로 동작을 안했음 OncePerRequestFilter를 상속받아 doFilterInternal메소드를 거칠때 다음과같이 Claims객체로 jwt토큰을 이용해서 사용자 고유값을 받아오는 과정이 있는데 Jwts.parser().setSigningKey(secret).parseClaimsJws(token)..

spring 2021.08.26