본문 바로가기

Back End

(16)
[Spring Boot] connection timeout 시간 늘리기 ■ 목표 - apache + 스프링부트(tomcat) + jsp/jquery 기반으로 개발 도중 대용량 데이터를 처리하는 과정에서 커넥션 타임아웃 발생. - 커넥션 타임아웃을 늘리기 위해 여러가지 테스트를 진행하였다. - 실제로 이 방법이 쓰이는 일은 없었다... 타임아웃이 발생한다는 것은 로직이 너무 오래 걸리기 때문으로.. 설계 및 로직을 수정하는 것으로 결론이 났다. 무작정 타임아웃을 늘리는 것이 능사는 아니다. 타임아웃을 늘리게 되면 서버에서 수행중인지, 오류로 커넥션이 묶인 것인지 판단이 힘들어진다. 되도록 타임아웃을 늘리지 않고 오래 걸리는 로직을 수정하는 것이 좋을 듯 하다. 1. ajax 요청 시 타임아웃을 늘려보기 js단에서 서버로 ajax 요청을 보낼 시, 타임아웃 시간을 늘려서 테스트..
[Spring] Controller 에서 HTML텍스트를 HTML페이지로 리턴하기. ■ 목표 - Spring 컨트롤러에서 HTML텍스트를 브라우저에서 바로 렌더링되도록 리턴한다. (보통 jsp나 html파일 경로를 리턴하는데 HTML문서의 본문 텍스트를 리턴하는 방법이다.) 이런 방법을 쓸일이 없을것만 같은데 일하다보니 생긴다... 샘플로 사용할 HTML은 아래와 같다. example 2-1 html example hello world hello world hello world hello world hello world hello world ■ 소스코드 방법은 간단하다. Controller에서 response를 인자로 받아, 해당 response에 직접 HTML 본문을 출력하면 된다. 단 보안적인 측면은 무시하고 테스트로 개발하였다. 보안이 필요한 페이지라면 헤더 등을 사용해 인증 관련..
[Spring] request 가 동시에 많이 들어오는 상황에 대한 고찰(파일 업로드) ■ 상황 프로젝트 진행 도중 아래와 같은 개발을 할 일이 생기게 되었다. Apache & Tomcat, Spring기반 개발 환경이다. 포탈과 웹 오피스 엔진간의 연동이다. - 다운로드와 업로드는 HTTP통신을 통해 이루어지며, 업로드 시 multipart로 파일을 전송한다. - 포탈에선 업로드시 파일을 다운로드 받아, 원래 경로에 있는 파일에 덮어쓴다. - 유저 수는 최대 10000명이고, 오피스에서 한 파일을 동시에 수정 가능한 인원은 최대 200명이다. ■ 고민 다운로드, 업로드 API를 개발하는 도중 고민이 생기게 되었다. 웹오피스에서 동시다발적으로 여러 사용자가 파일을 수정하게 되면, 업로드 API가 동시다발적으로 요청되지 않을까? 라는 고민에서 시작했다. 1. 파일 업로드로 처리되는 속도보다 ..
[Spring Boot & Intellij] Ambiguous method call: both 에러 해결 (Lombok @Delegate) ■ 현상 - Intellij에서 스프링부트 작업 중 아래와 같은 에러 발생. - 클래스에 동일한 메서드가 두개라고 하는 것 같다. ■ 원인 Lombok의 @Delegate 어노테이션으로 인한 함수 중복 문제이다. 아래 사진에서 @Delegate메서드를 통해 User의 메서드를 MyUserDetail에서도 사용할 수있게 되었다. 하지만 User클래스를 들어가보면 이미 password필드가 존재하기 때문에 MyUserDetail클래스에서 함수가 중복되기 때문에 에러가 발생하였다. ■ 해결방법 중복되는 함수를 제거하니 정상 동작한다.
[Spring Boot] application.properties -> application.yml로 변경하기. ■ 목표 - 스프링부트 프로젝트를 생성하면 기본으로 있는 application.properties를 application.yml로 변경한다. - yml파일은 가독성이 더 좋고, 하나의 파일로 프로필을 구분할 수 있는 장점이 있다. 1. application.yml파일 생성. 기존 application.properties파일이 있는 경로에 application.yml을 생성한다. 2. 파일 내용 변환 아래의 경로로 이동해 properties파일을 yml로 변환해준다. (Prop -> yml 자동 변환 사이트이다. 주석은 모두 제거된다.) Props To YAML - Online Converters | All Online Tools (allencoders.online) Props To YAML - Onlin..
[Spring Boot] Lombok 추가하기. (Intellij, Gradle) ■ 목표 - Spring Boot 프로젝트에 Lombok을 추가한다. ■ 사용 툴 - Intellij Ultimate 버전. - SpringBoot는 Gradle 사용. 1. build.gradle 파일에 의존성 추가. build.gradle 파일 dependencies에 아래 의존성을 추가한다. implementation 'org.projectlombok:lombok' 2. Reload All Gradle Projects 버튼 클릭. 우측 상단의 새로고침 버튼을 클릭한다. 우측 하단에 lombok을 다운받는 모습을 확인할 수 있다. 3. Intellij Lombok 플러그인 설치. File > Settings > plugins 메뉴에서 Lombok 플러그인을 설치한다. 4. Lombok 설치 확인 Lo..
[Spring Boot & JPA & mysql] 스프링부트 mysql JPA 연결하기. ■ 목표 - Springboot 프로젝트에 JPA, mysql을 연동한다. ■ 사전 준비사항 - Springboot 프로젝트 (gradle) - mysql 설치 mysql은 아래 글을 참고해 docker를 이용해 설치하였다. 갓대희의 작은공간 :: [Docker (1)] window10 Docker 설치하기(윈도우 10 도커 설치) (tistory.com) [Docker (1)] window10 Docker 설치하기(윈도우 10 도커 설치) [Docker (1)] window10 Docker 설치하기(윈도우 10 도커 설치) 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ Window10 도커 설치 ] 입니다. : ) 도커 설치하기 ▶ 1. 도커란? 도커 설치와 관련된 포스팅 이기. goddaehee.ti..
[Spring Boot & Intellij] 프로젝트 생성하기 Intellij를 사용해 스프링부트 프로젝트를 생성 후 실행한다. Intellij Ultimate 버전에서 제공하는 기능을 사용하기 때문에 Ultimate버전으로 설치되어야 가능하다. 1. Intellij 버전 - Intellij는 ultimate, 2021.1.3 버전이다. 2. Intellij에서 Spring Boot 생성하기. Intellij Ultimate버전에서는 Spring Boot 생성을 지원하고 있다. Intellij기능을 통해 Spring Boot 프로젝트를 생성한다. 2-1) 새 프로젝트 생성 File > Project...을 클릭해 새 프로젝트를 생성합니다. Spring Initalizr를 선택한 후 프로젝트 명, 자바 버전, 등 프로젝트 기본 정보를 설정한다. 자바 버전 또한 자신이..