Java
-
API 예외 처리Java/SpringBoot 2022. 8. 18. 17:24
기존 방식의 예외처리로는 API 요청 시 예외가 발생하지 않을 경우- 데이터가 정상적으로 반환되지만 예외가 발생하면- 오류 페이지를 반환한다. 그래서 오류 발생 시에도 JSON 형식의 데이터를 반환하도록 한다. API 응답 @RequestMapping(value = "/error-page/500", produces =MediaType.APPLICATION_JSON_VALUE) public ResponseEntity errorPage500Api(HttpServletRequest request, HttpServletResponse response) { log.info("API errorPage 500"); Map result = new HashMap(); Exception ex = (Exception) re..
-
파일 업로드Java/SpringBoot 2022. 8. 18. 17:12
Http form을 서버에 보낼때 여러 항목을 보내기 위해서 `multipart/form-data` 형식을 사용한다. 이를 통해 여러 파일과 폼의 내용을 함께 전송할 수 있다. 서블릿과 파일 업로드1 package hello.upload.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.Req..
-
타입 컨버터Java/SpringBoot 2022. 8. 18. 17:11
Spring Type Converter @GetMapping("/hello-v2") public String helloV2(@RequestParam Integer data) { System.out.println("data = " + data); return "ok"; } url의 파라미터로 들어올때의 data는 문자열 형식인데 스프링의 @RequestParam을 거치면 문자가 정수 형식으로 들어온다. 스프링이 중간에서 타입 변환을 해주기 때문이다. 컨버터 인터페이스 구현 package hello.typeconverter.converter; import lombok.extern.slf4j.Slf4j; import org.springframework.core.convert.converter.Converter..
-
쓰레드 풀(Thread pool)을 이용해 이미지 크롤러 성능 높이기Java 2022. 8. 5. 22:49
쓰레드를 잘 만져서 웹 크롤러의 성능을 높여보도록 한다. 일단 Jsoup을 이용해서 셔터스톡에서 1,000장의 이미지를 스토리지에 저장하는 프로그램을 만들었다. 성능의 측정 기준은 프로그램이 완료하는데 걸리는 시간으로 했다. https://github.com/ghchoi0427/SocketServer/blob/master/src/main/java/threadpool GitHub - ghchoi0427/SocketServer: 멀티쓰레딩, pub/sub 패턴, thread pool 멀티쓰레딩, pub/sub 패턴, thread pool. Contribute to ghchoi0427/SocketServer development by creating an account on GitHub. github.com ..
-
Publish/Subscribe 패턴Java 2022. 6. 18. 23:15
PUB/SUB pattern이 뭘까? Publisher(전송자)가 특정 subscriber(수신자)에게 직접 메시지를 보내도록 프로그래밍하지 않고, subscriber에 대한 정보는 갖지 않은 채로, 발행된 메시지를 클래스로 분류하는 것이다. 신문기사나 잡지, 유튜브의 구독과 같은 방법이라고 생각하면 쉽다. 발행자는 자신이 모르는, 알 필요 없는 구독자에게 메시지를 전파한다. 구독을 신청한 구독자는 신문 등을 받을 수 있다. PUB/SUB pattern의 장점 느슨한 결합: 메시지 전달과정에서 message broker나 event bus 등을 사용하기에 구독자에 관한 정보는 publisher에서 신경쓰지 않아도 된다. 이 때문에 publisher와 subscriber는 낮은 결합도를 갖는다. 확장성: ..
-
XML 형식의 데이터 파싱, 검색기능 구현Java/Android Studio 2021. 7. 17. 23:06
데이터를 파싱하기 위해 데이터 애트리뷰트에 맞게 커스텀 클래스를 만든다. 데이터 상세설명에 가면 필드를 확인할 수 있다. 결과코드 resultCode 2 필수 00 결과코드 암호화된 요양기호 ykiho 400 필수 {생략} {생략} 병원명 yadmNm 150 옵션 서울특별시서울의료원 병원명 종별코드 clCd 2 옵션 11 종별코드 종별코드명 clCdNm 150 옵션 종합병원 종별코드명 시도코드 sidoCd 6 옵션 110000 시도코드 시도명 sidoCdNm 150 옵션 서울 시도명 시군구코드 sgguCd 6 옵션 110019 시군구코드 시군구명 sgguCdNm 150 옵션 중랑구 시군구명 읍면동명 emdongNm 150 옵션 신내동 읍면동명 우편번호 postNo 6 옵션 02053 우편번호 주소 add..
-
공공데이터 API 요청 보내고 응답 받기Java/Android Studio 2021. 7. 17. 21:59
의료기기, 병원 등의 정보를 불러와서 휴대폰으로 볼 수 있도록 한다. 안드로이드 스튜디오에서 공공데이터를 API로 불러오도록 해보자. data.go.kr (공공데이터 포털)에서 우선 활용신청을 한다. 보통 인증키 받고 1~2시간 이후에나 사용 가능하다고 하는데 나는 대부분 10분안에 정상 응답이 왔던거 같다. /* Java 샘플 코드 */ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.io.BufferedReader; import java.io.IOException; public class ApiExplorer { pub..