스터디

스터디

[SpringBoot] 스프링부트 Dependency 버전 선택하는 법

오늘은 스프링부트에서 사용하는 디펜던시(Dependency) 버전을 선택하는 방법에 대해 포스팅하려 한다. 우선 스프링 공식 웹페이지에 접속해야한다. https://spring.io/ Spring makes Java simple. Level up your Java code and explore what Spring can do for you. spring.io 접속하면 위와같은 화면이 나오는데 상단 여러개 탭 중에 'Projects - Spring Boot' 를 선택해야한다. 그럼 이런 화면이 출력되는데 여기서 OVERVIEW 우측에 있는 LEARN 을 클릭하자 그리고 자신이 사용하고 있는 스프링부트 버전의 'Reference Doc.'을 클릭한다. 필자는 2.6.3을 선택해보았다. 그렇게 출력된 페이지..

스터디

[SpringBoot] [트러블슈팅] Swagger2 - ApplicationContextException: failed to start bean 'documentationpluginsbootstrapper'

API Spec 자동 문서화를 위해 SpringFox-Swagger2 를 사용할 때 failed to start bean 'documentationpluginsbootstrapper'; 이라는 오류 메세지와 함께 ApplicationContextException 예외가 발생하였다. 원인을 찾아보니 스프링 부트의 버전과 Swagger2의 버전이 호환되지 않아서 발생하는 문제였다. Spring boot 2.6버전 이후에 spring.mvc.pathmatch.matching-strategy 값이 ant_apth_matcher에서 path_pattern_parser로 변경되면서 몇몇 라이브러리(swagger포함)에 오류가 발생한다고 한다. 이 문제를 해결하기 위해 여러 방안을 몰색했고, 해결 방법을 3가지를 찾..

스터디

[SpringBoot] Spring Data Jpa 사용 / Bean 등록

Spring Data Jpa란 spring framework에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트이며 CRUD 처리를 위한 공통 인터페이스를 제공해준다. 동아리에서 프로젝트를 진행하며 Spring Data Jpa를 사용하여 레퍼지토리를 만들었는데 전에 Jpa만 사용하던 방식보다 훨씬 편리하기 때문에 과정을 기록해보려 한다. 바로 시작하겠다. Entity 생성 우선 엔티티를 생성해야 한다. User에 관해 생성할 것이므로 User라는 클래스를 하나 만들었다. User.java @Getter @NoArgsConstructor @Table(name = "USER") @Entity public class User { @Id @GeneratedValue(strategy = GenerationT..

스터디

[SpringBoot] [트러블슈팅] 스프링부트 AWS 구성 설정(aws configure)

IT동아리 DND에서 팀 프로젝트 중 알 수 없는 오류가 발생했다. 팀원분의 PC에선 아무 문제없이 작동하는데 내 컴퓨터에선 여러 가지 aws관련 오류가 나타나며 작동되지 않았다. 이유를 몰라 11시간 가량 헤매다가 결국 해결해냈다. 인간 승리의 과정이었지만 막상 간단한 문제였기 때문에 허무했다.. 문제 정의 문제는 아래와 같은 오류가 발생하는 것이었다. 팀원분이 AWS와 git Action을 통해 CI/CD 파이프라인을 구축했고 나는 깃 레퍼지토리에서 프로젝트를 클론 하여 받아온 상황이었다. 하지만 aws와 관련된 여러 예외를 맞닥드리게 되었다. 사실 수집 팀원분의 컴퓨터에선 아무 문제없이 잘 돌아가지만 내 컴퓨터에서는 저러한 예외를 내뱉으며 작동하지 않았다. CLI 버전2 를 설치해 key, secr..

스터디

[SpringBoot] InstantiationException: No default constructor for entity

@Builder를 사용할 때 이러한 오류를 접하게 되었다. 확인해보니 @Builder 어노테이션을 사용한 Entity에 기본 생성자가 없어 나타난 오류였다. 분명 생성자를 만들어 주어도 같은 문제가 반복되었고 확인해본 결과, 문제는 @Builder 에 있었다. JPA를 사용하려면 '디폴트 생성자' 가 필요하다. 하지만 @Builder 어노테이션은 빌드 클래스를 자동으로 만들어주는데, 이 과정에서 디폴트 생성자 대신 모든 필드값을 가지는 생성자만 생성해버린다고 한다. 따라서 @Builder 를 사용하고자 하는 클래스에 (나같은 경우는 Entity에) @NoArgsConstructor 와 @AllArgsConstructor 를 추가해주면 해결된다. @NoArgsConstructor 파라미터가 없는 기본 생성..

스터디

[SpringBoot] JPA / EntityManager 외래키 체크 설정 해제! - SQLIntegrityConstraintViolationException 해결법

스프링부트와 DB를 연동해서 쓰다보면 가끔 외래키로 인해 문제가 발생하는 경우가 있다. 나같은 경우는 00시마다 PARK_DATA 테이블을 delete from 으로 초기화 시켜야하는데 연관되어 있는 외래키 때문에 아래와 같은 오류가 발생해 골치아팠다. 이를 해결하기 위해선 EntityManager 의 createNativeQuery 함수를 사용해야한다. NativeQuery란? 다양한 이유로 JPQL을 사용할 수 없을 때, JPA에서 NativeQuery를 통해 SQL을 직접 사용할 수 있는 기능을 제공. SQL 구문인 SET FOREIGN_KEY_CHECKS = 0 을 사용하면 외래키 체크 설정을 해제할 수 있지만 JPQL에서 이와 같은 기능을 하는 문법은 찾을 수가 없었다. 그래서 SQL 구문을 직..

스터디

[SpringBoot] 스프링 파일 사이즈 제한 오류 - FileSizeLimitExceededException

스프링에서 MultipartFile을 처리하는 과정에서 이러한 오류 메세지가 나타는 경우가 있다. http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes. 스프링부트에서 1MB 보다 작은 파일은 상관없지만 1MB보다 큰 파일을 다루기 위해선 application.properties 설정이 불가피하다. 해결 방법 방법은 간단하다. 우선 스프링부트 2.0.0 이상 버전을 사용한다면 application.properties 에 이렇게 작성하면 된다. application.properties spring.servlet.multipart...

스터디

[SpringBoot] @RequestBody란?

안녕하세요! 오늘은 Json형태를 자바 객체로 변환시켜주는 @RequestBody 에 대해 알아보겠습니다. UserController.java @RestController @RequestMapping("user") public class UserController { private final UserServiceImpl userService; public UserController(UserServiceImpl userService) { this.userService = userService; } @PostMapping("register") public void register(@RequestBody User user){ System.out.println(user.toString()); userServic..

PgmJUN
'스터디' 카테고리의 글 목록 (2 Page)