Spring Boot 의 동작 방식
·
Backend/Spring Boot
이번 시간에는 스프링과 스프링 부트가 무엇이며, 스프링 부트는 어떻게 동작하는 지에 대한 공부를 해보겠습니다.스프링 부트의 기본 의존성 중 하나인 spring-boot-starter-web 모듈을 사용하면, 기본적으로 내장 톰캣을 사용하는 스프링 MVC 구조를 기반으로 동작합니다. 클라이언트의 요청이 들어오면 서블릿이 이를 처리해야 하는데, 서블릿은 서블릿 컨테이너에서 관리하고, 톰캣이 서블릿 컨테이너의 역할과 WAS 역할을 담당합니다. 서블릿(Servlet)클라이언트의 요청을 처리하고, 결과를 반환하는 자바의 웹 프로그래밍 기술입니다. 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리합니다. 서블릿 객체는 싱글톤 패턴으로 관리되며, 멀티 스레딩을 지원합니다.   DispatcherServl..
프로젝트 리펙토링 (1) - Facade Pattern 도입
·
Backend/Spring Boot
퍼사드 패턴을 도입하게 된 배경디자이너, 프론트엔드, 백엔드 총 5명으로 구성된 우리 팀은 올해 초부터 쉴 틈 없이 달려왔다. 매주 팀 회의, 파트별 회의, 프론트/백엔드 회의를 각각 1회씩 진행하며, 기획부터 설계, 개발까지 모두 경험했다. 배포 전에는 통합 테스트를 거쳐 최종적으로 이슈를 해결하고 도메인 등록과 배포를 통해 프로젝트를 성공적으로 마무리하였다. 프로젝트가 종료된 후 일부 팀원은 각자의 삶으로 돌아갔다. 어쩌면 당연한 일이지만, 시작이 있으면 끝이 있다는 게 시원섭섭하다. 알면서도 어쩔 수 없는 감정인 듯하다.배포된 서비스를 사용해보고 프로젝트 코드를 살펴보니 일정에 맞추느라 신경 쓰지 못했던 부분, 아쉬웠던 부분, 개선해 보면 좋을 것 같은 부분들이 보였다. 그중에서도 눈에 띈 부분은 ..
Query did not return a unique result: 2 results were returned 에러 해결하기
·
Backend/Spring Boot
테스트 코드를 작성하다가 문뜩 이런 에러를 마주하였다. Query did not return a unique result: 2 results were returned 엥?.. 왜 2개의 결과값이 들어오지 ? 살펴보니 Repository에서 값을 받아오면서 생긴 문제였다. Optional findByIdentifer (string identifier); 해결 방법은 Optional이 아닌 List로 데이터를 받자! 쉽죠잉? Optional findByIdentifer (string identifier); // 변경 전 List findByIdentifer (string identifier); // 변경 후
Content type 'application/octet-stream' not supported 에러
·
Backend/Spring Boot
controller에서 multipartFile 타입의 이미지와 json 타입의 dto를 같이 받기 위해 requestpart를 사용하면서 만난 오류이다. dto는 requestbody를 통한 전달이 아닌 form-data로 전달을 해주어야 했고, 그 상황에서 json 타입의 데이터를 보내는 방식에서 문제가 생겼다. form-data 타입의 key-value 값으로 json을 보내줄 때는 content-type을 application/json으로 직접 명시해주자 !! 문제 해결 :)
prepareKotlinBuildScriptModel Task fails in a Java project 오류 해결
·
Backend/Spring Boot
tasks.register("prepareKotlinBuildScriptModel"){ } build.gradle에 추가해주기 ! 해결 완!
spring에 swagger 적용하면서 겪은 3가지 에러 해결하기
·
Backend/Spring Boot
스프링 2.X.X 특정 버전 이후로 Swagger2:2.X.X 버전 실행 에러 발생 해결 -> build.gradle파일의 springfox ~ 버전들을 모두 3.0.0 으로 바꿔준다. // Swagger Lib implementation 'io.springfox:springfox-swagger2:3.0.0' implementation 'io.springfox:springfox-swagger-ui:3.0.0' implementation 'io.springfox:springfox-boot-starter:3.0.0' org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrap..
assertThat 라이브러리 추가하기
·
Backend/Spring Boot
dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' testImplementation 'org.assertj:assertj-core:3.11.1' // assertThat 을 쓸 수 있게 해주는 라이브러리 } build.gradle 파일 수정하면 버튼이 활성되는데 그걸 꼭 눌러야 반영이 된다.