본문 바로가기

Java

(15)
[Reactive Java] Spring WebFlux에서 Error 다루기 애플리케이션을 설계하고 개발할 때 다양한 케이스의 예외 상황을 고려해야 하는 것처럼, 리액티브 애플리케이션을 설계할 때도 모든 종류의 예외 상황을 처리 할 수 있어야 한다. 우리가 알고 있는 onError 시그널은 리액티브 스트림 스펙의 필수 요소여서 예외를 처리할 수 있는 경로로 전파 할 수 있다. 그러나 최종 구독자가 onError 시그널에 대한 핸들러를 정의하지 않으면 onError는 UnsupportedOperationException을 발생 시킨다.그리고 리액티브 스트림에서는 onError가 스트림이 종료되었다고 정의하고 있다. 그렇기 때문에 onError 시그널을 받으면 시퀀스가 실행을 중지하게 된다. 아래 onError 시그널을 처리할 수 있는 다양한 방법을 살펴보자.1. subscribe ..
[JAVA] HttpURLConnection로 REST API 호출하기 이번 페이지에서는 HttpURLConnection을 이용해 REST API를 호출하는 방법을 알아보자. [GET] public void get(String strUrl) { try { URL url = new URL(strUrl); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setConnectTimeout(5000); //서버에 연결되는 Timeout 시간 설정 con.setReadTimeout(5000); // InputStream 읽어 오는 Timeout 시간 설정 con.addRequestProperty..
[JAVA] REST API Client Library 알아보기 in Java Project 시스템 서비스 규모가 커지고 마이크로서비스 개념이 확산되어가면서 많은 프로젝트에서 서비스간에 통신 방식으로 REST API를 선호 하고 있다. 이 페이지에서는 REST API 사용자 입장(Client)에서 활용할 수 있는 JAVA Library를 알아보고자 한다. REST API Client에 JAVA Library로는 HttpURLConnection, HttpClient, OkHttp, Retrofit, RestTemplate를 대표적으로 들 수 있다. 이것 이외에도 수많은 Library가 존재하지만 많은 개발자가 선택하고 사용하고 있는 4가지 Library에 대해 간략하게 알아보자. 1. HttpURLConnection - 기본 JDK에 포함되어 있음. (jdk1.2부터 내장되어 있으며 java.ne..
[JAVA 8] 메서드 레퍼런스 알아보기! 메서드 레퍼런스는 특정 메서드만을 호출하는 람다의 축약 표현이라고 생각할 수 있다. 람다가 특정 메서드를 직접 호출하게 된다면 메서드를 어떻게 호출해야 하는지 설명을 참조 하기 보다 메서드 명을 직접 참조 하도록 하는 것이다. 메서드 레퍼런스를 이용한다면 기존 메서드 구현으로 람다 표현식을 만들 수 있다. 이때 명시적으로 메서드명을 참조 하게 됨으로서 가독성을 높일 수 있는 장점이 있다. 메서드 레퍼런스는 메서드명 앞에 구분자 (::)를 붙이는 방식으로 사용된다. Car :: getPrice (== (Car c) -> getPrice())는 Car 클래스의 getPrice의 메서드 레퍼런스를 뜻한다. [예제] (Car c) -> c.getPrice() =========> Car :: getPrice ()..
[JAVA 8] 형식 검사, 형식 추론, 제약 람다로 함수형 인터페이스의 인스턴스를 만들 수 있으며 람다 표현식에는 람다가 어떤 함수형 인터페이스를 구현하는지 정보를 가지고 있다. 따라서 람다 표현식을 더 제대로 이해하려면 람다의 실제 형식을 파악해야 한다. 1. 형식 검사 - 람다에 사용되는 내용을 바탕으로 람다의 형식을 추론할 수 있다. - 대상 형식 ? 람다가 전달될 파라미터나 람다가 할당되는 변수 등에서 기대되는 람다 표현식의 형식을 대상 형식이라 부른다. (예: Predicate) - filter() 함수의 정의를 보면 파라미터로 Predicate로 정의 되어 있다. - 즉, Predicate라는 대상 형식에 만족하는 람다 함수를 기대하는 것이다. 1-1.같은 람다, 다른 함수형 인터페이스 - 대상 형식이라는 특징 때문에 같은 람다 표현식이..
실전 스프링 부트 워크북 실전 스프링 부트 워크북 ​ 이 글을 쓰고 있는 지금, 세계 및 한국에서 가장 많이 쓰고 있는 프로그래밍 언어는 JAVA이다. 많은 사람들이 JAVA 언어의 한계에 대해서 이야기하고 있으며 앞으로 에 JAVA에 대해서 걱정하고는 있지만 JAVA8에서 보여준 JAVA의 혁신적인 변신은 아직 JAVA가 살아 있음을 보여주기 충분했다. 이러한 흐름을 바탕으로 조심스레 예상해 본다면 JAVA라는 언어는 향후 몇 년간 1위 자리를 지킬 것이라 예상하며 특히 국내에서는 더욱 긴 생명력을 가질 것이라 생각한다. 이와 같은 생각을 바탕으로 저자는 JAVA라는 언어에 시간을 투자하여 학습하는 것은 충분한 가치가 있다고 생각하며 불행히도 저자의 예상과 다르게 JAVA라는 언어를 사용하는 빈도가 급속도로 줄어든다고 하여도 ..
[IT 첫걸음] JAVA8편 람다(lambda) ​ 1. 람다 표현식(lambda)은 나중에 한번 이상 실행할 수 있도록 전달할 수 있는 코드 블록이다. - 과거에 자바는 어딘가에 코드 블록을 전달하는 일이 쉽지 않았다.(즉, 단순히 코드 블록을 전달할 수 없음.) 자바는 객체지향 언어기 때문에, 원하는 코드가 있는 메서드를 포함하는 클래스의 객체를 생성해야했음. 2. 람다 표현식 문법 - (파라미터, 화살표->,표현식) * 예 : (String first, String second) -> Integer.compare(first.length(), second.length()) * 자바는 타입 결합이 강한 언어기 때문에 타입도 지정해야함. - 표현식 하나로 표현할 수 없는 계산은 중괄호{}를 사용하고 명시적 return문 사용. *예 : (String ..