본문 바로가기

프로그래밍/RxJava

[RxJava] Hello RxJava2!

개발환경은 intelliJ를 사용했다.

RxJava를 사용하기 위해서 gradle 파일RxJava 라이브러리를 implementation해줘야한다.

dependencies {
    implementation "io.reactivex.rxjava2:rxjava:2.1.3"
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

 

먼저! Hello RxJava2라는 문자열을 출력해보자!

전체코드는 아래와 같다.

 

[FirstExample.java]

import io.reactivex.Observable;

public class FirstExample {
    public void emit(){
        Observable.just("Hello", "RxJava 2!!")
                .subscribe(System.out::println);
    }

    public static void main(String[] args) {
        FirstExample demo = new FirstExample();
        demo.emit();
    }
}

[결과값]

Hello
RxJava 2!!

 

소스 코드를 하나씩 살펴보도록 하자.

 

1. io.reactivex

import 부분을 살펴보면 RxJava2의 기본 패키지 이름은 io.reactivex이다. ReactiveX의 홈페이지 주소를 거꾸로 쓴것 같다.

2. Observable 클래스

Observable 클래스는 데이터의 변화가 발생하는 데이터 소스(data source)이다. 즉, 앞서서 말했던 연간 매출액의 예제에서 개별적인 월간 매출액 데이터를 말한다. Observable에 대한 내용은 뒤에서 더 자세히 설명하겠다. 여기서는 Observable에서 시작한다는 사실만 기억하자!

3. just() 함수

Observable 클래스의 just()함수는 가장 단순한 Observable 선언 방식이다. 위의 예에서는 데이터 소스에서 "Hello"와 "RxJava 2!!"를 발행했다. Integer와 같은 래퍼 타입부터 Order같은 사용자 정의 클래스의 객체도 인자로 물론 넣을 수 있다.

4. subscribe()함수

subscribe() 함수는 Observable을 구독한다. Observable은 subscribe() 함수를 호출해야 비로소 변화한 데이터를 구독자에게 발행한다. (즉, just 함수만 호출하면 데이터를 발행하지 않는다.) 반드시, 데이터를 수신한 구독자가 subscribe()함수를 호출해야 Observable에서 데이터가 발행된다. 이 부분의 자세한 내용은 뒤에서 더 설명하도록 하겠다.

5.System.out::println

수신한 데이터를 System.out.pritnln으로 호출했다. System.out::println부분은 자바 8의 메서드 레퍼런스를 활용했다. 만약에 메서드 레퍼런스를 사용하지 않는다면, data -> System.out.println(data)를 사용하면 된다.

 

public void emit() {
		Observable.just("Hello", "RxJava2!!")
		.subscribe(data -> System.out.println(data));
	}

Observable이 발행한 데이터는 data 인자로 들어오게 된다.

6.emit() 메서드

우리가 만든 emit() 메서드이다. 내보내다라는 뜻인데, Observable이 subscribe()함수를 호출한 구독자에게 데이터를 발행하는 것을 표현하는 용어이다.