백엔드/SpringBoot
[ 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..
[ 스프링부트 / 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 Boot ] Swagger 간단히 구현
작업 환경 IDE: intellij JDK: 11 Spring: Spring Boot 2.5.1 + Gradle 1. 들어가기전 Swagger REST 웹 서비스를 제공하려면 프론트엔드 개발자에게 전달해줄 API문서가 필수적이다. 그런 문서를 작업해서 전달해주는건 수고로운 일이다. 그래서 나타난게 Swagger이며, 이것은 문서뿐 아니라 빌드, 테스트 케이스, 등도 작성할 수 있다. 스웨거(Swagger)는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. 대부분의 사용자들은 스웨거 UI 도구를 통해 스웨거를 식별하며 스웨거 툴셋에는 자동화된 문서화, 코드 생성, 테스트 케이스 생성 지원이 포함된다. / 위키..
[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. 서버는 요청을 받는다. 일..
[ 스프링부트 / SpringBoot] Exception 처리
첫번째 방식, Global(전역)처리 방식 1. Global(전역)처리 방식 - @RestControllerAdvice (rest), @ControllerAdvice (view) - 화면을 리턴하지 않고 Rest방식으로 사용할 경우 @RestControllerAdvice, 화면(jsp, html)을 리턴하는 @ControllerAdvice를 사용하면 된다. - basePackages 속성을 지정하면, 해당 패키지 내에서만 Exception 처리가 가능하다. - basePackageClasses 속성을 지정하면, 해당 클래스 내에서만 Exception 처리가 가능하다. - @ExceptionHandler에 value를 통해 어떤 Exception을 처리할 것인지 지정할 수 있다. @RestControlle..