[java] JavaFX 세션 및 전역 데이터 공유

JavaFX는 사용자 인터페이스를 개발하기 위한 강력한 프레임워크입니다. 하지만 JavaFX 애플리케이션을 개발할 때 세션 및 전역 데이터를 효율적으로 관리하는 것은 중요한 과제입니다. 이 글에서는 JavaFX 세션의 개념과 전역 데이터를 공유하는 방법에 대해 알아보겠습니다.

세션 개념

JavaFX 애플리케이션에서 세션은 애플리케이션 실행 중에 유지되는 사용자별 데이터 저장 공간입니다. 세션은 인증, 상태 및 기타 사용자 관련 정보를 저장하는 데 사용됩니다. 보통 웹 애플리케이션에서 세션은 웹 브라우저와 서버 간에 상태를 유지하는 데 사용되지만, JavaFX 애플리케이션에서는 세션을 조금 다른 방식으로 사용할 수 있습니다.

JavaFX에서 세션을 구현하기 위해서는 Session 클래스를 만들어 세션 데이터를 관리해야 합니다. 예를 들어, 다음은 Session 클래스의 기본적인 구현 예시입니다:

public class Session {
    private static Session instance;
    private Map<String, Object> data;

    private Session() {
        data = new HashMap<>();
    }

    public static Session getInstance() {
        if (instance == null) {
            instance = new Session();
        }
        return instance;
    }

    public void setAttribute(String key, Object value) {
        data.put(key, value);
    }

    public Object getAttribute(String key) {
        return data.get(key);
    }
}

위의 예시에서는 Session 클래스를 Singleton 패턴으로 구현하여 전역적으로 접근 가능하도록 만들었습니다. setAttribute 메소드를 사용하여 데이터를 저장하고, getAttribute 메소드를 사용하여 데이터를 가져올 수 있습니다.

전역 데이터 공유

JavaFX 애플리케이션에서 전역 데이터를 공유하기 위해 Singleton 패턴과 함께 ApplicationContext 클래스를 사용할 수 있습니다. ApplicationContext 클래스는 애플리케이션 전반에서 사용되는 데이터를 관리하기 위한 빈 컨테이너 역할을 합니다.

다음은 ApplicationContext 클래스의 예시입니다:

public class ApplicationContext {
    private static ApplicationContext instance;
    private Map<String, Object> beans;

    private ApplicationContext() {
        beans = new HashMap<>();
    }

    public static ApplicationContext getInstance() {
        if (instance == null) {
            instance = new ApplicationContext();
        }
        return instance;
    }

    public void addBean(String name, Object bean) {
        beans.put(name, bean);
    }

    public Object getBean(String name) {
        return beans.get(name);
    }
}

위의 예시에서는 addBean 메소드를 사용하여 빈을 추가하고, getBean 메소드를 사용하여 빈을 가져올 수 있습니다.

사용 예시

JavaFX 애플리케이션에서 세션 및 전역 데이터를 사용하는 예시를 살펴보겠습니다.

public class MainApp extends Application {
    @Override
    public void start(Stage primaryStage) {
        Session session = Session.getInstance();
        session.setAttribute("userId", "user123");

        ApplicationContext context = ApplicationContext.getInstance();
        context.addBean("dataService", new DataService());

        // JavaFX 애플리케이션 로직 작성
    }
    
    public static void main(String[] args) {
        launch(args);
    }
}

위의 예시에서는 Session 클래스를 사용하여 세션 데이터를 설정하고 가져오고, ApplicationContext 클래스를 사용하여 데이터 서비스 객체를 등록하고 가져오는 것을 볼 수 있습니다.

결론

JavaFX 애플리케이션에서 세션 및 전역 데이터를 효율적으로 관리하는 것은 중요한 과제입니다. 이 글에서는 세션의 개념을 소개하고, Session 클래스와 ApplicationContext 클래스를 사용하여 세션 및 전역 데이터를 관리하는 방법을 살펴보았습니다. 이를 통해 JavaFX 애플리케이션의 데이터 관리를 더욱 효율적으로 할 수 있습니다.


참고 문서