Java | Spring

Java 콜백 메서드 이해와 구현

@leem 2025. 1. 9. 17:00

콜백 메서드

콜백 메서드는 특정 작업이 완료되었을 때 호출되는 메서드입니다.

예를 들어, "버튼이 눌리면 이 일을 해줘!"와 같이 이벤트와 함께 동작을 실행하는 방식을 말해요.

콜백 메서드를 사용하면 코드를 재사용할 수 있고, 더 유연하게 설계할 수 있습니다.


필요성

  1. 이벤트 기반 동작: 버튼 클릭, 데이터 로드 완료 등 특정 이벤트가 발생했을 때 실행할 작업을 정의할 수 있어요.
  2. 코드 재사용성: 한 번 만들어 놓으면 여러 상황에서 동일한 메서드를 재사용할 수 있습니다.
  3. 유연성: 실행 동작을 나중에 정의하거나 변경할 수 있어요. 코드를 더 깔끔하고 확장성 있게 만듭니다.

작동 원리

콜백 메서드의 핵심은 인터페이스메서드 구현입니다.

  1. 인터페이스로 메서드의 틀 정의: 어떤 작업을 할지 선언만 합니다.
  2. 구현 클래스로 구체적인 동작 정의: 인터페이스를 구현하여 실제 동작을 코딩합니다.
  3. 콜백 호출: 이벤트가 발생하면, 등록된 메서드를 호출하여 정의된 동작을 실행합니다.

예제: 버튼 클릭 이벤트 

콜백 메서드를 사용하는 간단한 예제 🛠️

1. 인터페이스 정의하기

먼저, 버튼이 클릭되었을 때 실행할 콜백 메서드를 정의합니다.
이 인터페이스는 버튼 클릭 이벤트에서 호출될 메서드를 제공합니다.

interface IButtonListener {
    void clickEvent(String event); // 콜백 메서드 선언
}

2. 버튼 클래스 구현

버튼 클래스는 실제로 이벤트를 실행하거나 콜백 메서드를 호출하는 역할을 합니다.

주요 기능:

  • addEventListener: 이벤트를 등록하는 메서드.
  • click: 버튼 클릭 시 등록된 콜백 메서드를 호출.
public class Button {

    private String name; // 버튼 이름
    private IButtonListener iButtonListener; // 콜백 메서드 저장 변수

    // 버튼 생성자
    public Button(String name) {
        this.name = name;
    }

    // 버튼 클릭 시 실행되는 메서드
    public void click(String message) {
        if (iButtonListener != null) { // 콜백 메서드가 등록된 경우만 실행
            iButtonListener.clickEvent(message);
        }
    }

    // 콜백 메서드 등록
    public void addEventListener(IButtonListener iButtonListener) {
        this.iButtonListener = iButtonListener;
    }
}

3. 메인 클래스: 콜백 메서드 실행

이제 버튼 객체를 생성하고, 콜백 메서드를 등록한 후 실행해봅시다.

주요 동작:

  • 버튼을 클릭했을 때, 등록된 콜백 메서드가 호출됩니다.
  • 콘솔에 클릭 이벤트 결과가 출력됩니다.
public class Main {
    public static void main(String[] args) {
        // 1. 버튼 객체 생성
        Button button = new Button("OK Button");

        // 2. 콜백 메서드 등록
        button.addEventListener(new IButtonListener() {
            @Override
            public void clickEvent(String event) {
                System.out.println("버튼 이벤트 발생: " + event);
            }
        });

        // 3. 버튼 클릭 시 콜백 메서드 실행
        button.click("OK 버튼이 눌렸습니다!");
    }
}

실행 결과

버튼 이벤트 발생: OK 버튼이 눌렸습니다!

코드 해석

  1. 인터페이스 선언: IButtonListener는 콜백 메서드의 구조를 정의합니다.
  2. 이벤트 등록: addEventListener 메서드로 콜백을 등록합니다.
  3. 이벤트 호출: click 메서드를 통해 등록된 콜백 메서드를 실행합니다.

포인트

  • 콜백 메서드의 유연성: 버튼 클릭 시 어떤 작업을 할지 자유롭게 정의할 수 있어요.
  • 인터페이스 활용법: 인터페이스는 동작을 정의할 때 유용합니다.
  • 익명 클래스: 익명 클래스를 사용해 간단하게 콜백 메서드를 구현할 수 있어요.

콜백 메서드의 활용 사례

  1. GUI 이벤트 처리: 버튼 클릭, 마우스 이동 등 사용자 이벤트 처리.
  2. 비동기 작업: 데이터 로드 완료 후 실행할 작업 정의.
  3. 네트워크 요청: 요청 응답에 따라 작업 실행.