Spring Boot
[ SpringBoot + jsp + intellij ] jsp 사용을 위한 설정
- 설치 환경 intellij: IntelliJ IDEA 2021.1.3 (Ultimate Edition) jdk: java17 spring boot: 2.6.4 1. spring boot 설정 Intellij Community 버전은 https://start.spring.io/ 에서 프로젝트르 세팅 1. *Packaging 방식을 War로 선택 (jar방식은 지원 안되는 듯) JSP Limitations When running a Spring Boot application that uses an embedded servlet container (and is packaged as an executable archive), there are some limitations in the JSP support...
[ 스프링부트 / Spring Boot ] 트랜잭션 전파가 안되는 현상
1. 비즈니스 로직 및 테스트 코드 @Service @RequiredArgsConstructor public class BookService { private final BookRepository bookRepository; private final AuthorRepository authorRepository; ... @Transactional void pubBookAndAuthor(){ Book book = new Book(); book.setName("JPA 시작하기"); bookRepository.save(book); Author author = new Author(); author.setName("martin"); authorRepository.save(author); throw new Runti..
[ JPA ] 4. Entity Listener
Reference. 한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online 이전 글 더보기 1. Repository interface 메서드 2. Query Method 정의 및 실습 3, Entity 기본속성 5.5. Entity Listener Listener: 이벤트를 관찰하고 있다가 발생하면 특정 동작을 진행 1. Entity Listener Annotation @PrePersist: insert method가 호출되기 전 @PreUpdate: merge method가 호출되기 전 @PreRemove: delete method가 호출되기 전 @PostPersist: insert method가 호출된 이후 @PostUpdate: merge method가 호출된 이후 @Pos..
[ 스프링부트 / Spring Boot ] 2.5.x data.sql 문제 (h2, mysql)
1. 문제 발생 온라인 강의를 듣는 중, data.sql을 만들어서 기초 데이터를 넣는 부분이 있었다. 같은 소스를 실행했는데, 문제가 발생하여 데이터가 입력되지 않고 에러가 발생했다. 2. 원인 파악 프로젝트 구성 및 테스트 코드 data.sql call next value for hibernate_sequence; insert into user (`id`, `name`, `email`, `created_at`, `updated_at`) values (1, 'martin', 'martin@fastcampus.com', now(), now()); call next value for hibernate_sequence; insert into user (`id`, `name`, `email`, `created..
[ 스프링 / Spring ] 4.x Controller Dto파라미터 매핑 안되는 현상 처리
작업을 하던 중 해결하는데 시간이 걸려 적게 되었다. 1. 문제 기존 시스템 컨트롤러 - > 새 시스템 컨트롤러에 이관하는 작업을 진행했다. 화면상에 form태그(post)로 해당 컨트롤러에 값을 전달한다. dateFrom, dateTo라는 두개의 값을 전달하는데 컨트롤러에 해당 dto에는 값이 매핑되지 않는 현상이 발생하였다. 기존 시스템에서는 dto에 값이 매핑이 됐고, 새 시스템에는 dto에 값이 매핑되지 않았다. 두 시스템은 같은 소스를 옮겨놓은 상태여서 소스는 동일했다. 2. 작업 과정 아래와 같이 문제들이 될만한 요소를 생각해 봤다. 1. 필터(Filter), 인터셉터(interceptor)에서 문제 발생 2. 설정(Config) 관련 문제 2.1. 필터(Filter), 인터셉터(interce..
[Spring Security + JWT + Swagger] 로그인 구현 - 1. 프로젝트 세팅
작업 환경 IDE: intellij JDK: 1.8 Spring: Spring Boot 2.5.1 + Gradle 1. 들어가기 전 JWT(JSON Web Token)란 무엇인가? 위키백과에서는 아래와 같이 정의한다. 즉 로그인 정보, 등 선택적인 데이터를 암호화하여 JSON으로 보관한다. JSON 웹 토큰(JSON Web Token, JWT)은 선택적 서명 및 선택적 암호화를 사용하여 데이터를 만들기 위한 인터넷 표준으로, 페이로드는 몇몇 클레임(claim) 표명(assert)을 처리하는 JSON을 보관하고 있다. / 위키 백과 JWT 공식 사이트: https://jwt.io/ JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method ..
[ 스프링부트 / Spring Boot ] Interceptor
#시작하기 전.. 이전 글 - [ 스프링부트 / Spring Boot ] Filter 위에 글에도 언급했지만, Spring Life Cycle 에는 Filter, Interceptor, AOP, 등 많은 기능들이 존재한다. 그 중 Interceptor에 대해 이해한 것에 대해 정리를 한거라 부족한게 많을 수 있다.. 1. Interceptor는 무엇인가? Interceptor 단어 그대로 데이터를 가로채서 처리하는 영역이다. Interceptor는 컨트롤러에 접근하기 전 request, response를 받아 처리가 가능하다. 그럼 여기서 의문이 생길 수 있다. Filter와 Interceptor는 같은 역할인 것이 아닌가? 그러나 두개는 큰 차이가 있다. 그것은 바로 스프링 컨테이너에 포함 여부다. 아..
[ 스프링부트 / Spring Boot ] Filter
#시작하기 전.. 현재 온라인 강의와 토비의 스프링 책를 통해 스프링 기초에 대해 공부를 시작하고 있다. 역시 내가 모르는 것들이 너무 많았고, 그 중 Spring MVC 라이프 사이클을 모르는 내 자신에 부끄러웠다. Filter, Interceptor, AOP를 이해하려면 Spring MVC 라이프 사이클이 너무 너무 중요하다. 그것을 이제서야 깨닫고 있으며, 공부하는 중이다... 1. Filter란 무엇인가? 필터를 설명하기 전에 스프링 MVC가 작동하는 원리에 대한 사전 지식이 필요하다. 내가 아는 얕은 지식으로 예로 든다면, 1. 사용자는 웹사이트에 접속을 한다. 2. 특정 버튼, 등을 통해 서버에 정보를 조회하거나, 등록, 수정, 등을 요청한다. (Request) 3. 서버는 요청을 받는다. 일..