在 Java 应用程序中删除/关闭 Firebase(用于热重新部署)

吉登科阿

我试图用它org.springframework.boot:spring-boot-devtools来加速开发。

我的项目使用 Firebase 来验证一些请求。Firebase 通过以下方式初始化:

@PostConstruct
public void instantiateFirebase() throws IOException {
    FirebaseOptions options = new FirebaseOptions.Builder()
            .setDatabaseUrl(String.format("https://%s.firebaseio.com", configuration.getFirebaseDatabase()))
            .setServiceAccount(serviceJson.getInputStream())
            .build();
    FirebaseApp.initializeApp(options);
}

在更改.class文件时重新加载上下文后Spring 报告错误:

Caused by: java.lang.IllegalStateException: FirebaseApp name [DEFAULT] already exists!
    at com.google.firebase.internal.Preconditions.checkState(Preconditions.java:173)
    at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:180)
    at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:160)

哪些 Firebase API 允许注销/销毁我应该在其中使用的 FirebaseApp @PreDestroy

吉登科阿

看起来不可能禁用/关闭/重新初始化 Firebase 应用程序。

在我的情况下,可以将该实例保留在内存中而无需更改。

根据您的要求,您可以简单地使用:

@PostConstruct
public void instantiateFirebase() throws IOException {
    // We use only FirebaseApp.DEFAULT_APP_NAME, so check is simple.
    if ( ! FirebaseApp.getApps().isEmpty())
        return;

    Resource serviceJson = applicationContext.getResource(String.format("classpath:firebase/%s", configuration.getFirebaseServiceJson()));

    FirebaseOptions options = new FirebaseOptions.Builder()
            .setDatabaseUrl(String.format("https://%s.firebaseio.com", configuration.getFirebaseDatabase()))
            .setServiceAccount(serviceJson.getInputStream())
            .build();
    FirebaseApp.initializeApp(options);
}

或过滤数据,如:

for (FirebaseApp app : FirebaseApp.getApps()) {
    if (app.getName().equals(FirebaseApp.DEFAULT_APP_NAME))
        return;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Java EE 7应用程序中使用ThreadPoolExecutor的Drools导致重新部署时出现问题

Firebase函数重新部署实用程序脚本

Play中的热重新部署与Spring Boot中的自动重启之间的区别

Blazor应用程序重新部署的最佳做法

重新部署应用程序时,Bouncycastle无法加载

docker tomcat重新部署应用程序

在 GitHub 页面上重新部署 React 应用程序

如何从 GNOME shell 应用程序列表中删除注销、重新启动和关闭?

在Tomcat中重新部署应用程序时发生内存泄漏

从应用程序中完全删除 firebase

在Java中关闭应用程序之前显示吐司

如何从代码中关闭Java Swing应用程序

如何处理Java中的关闭应用程序事件?

调试部署在tomcat中的Java应用程序

在Java应用程序中刷新/重新加载图像(Swing)

Docker:用于在 docker-compose.yml 中自动重新部署新图像推送的选项

在Firebase上进行某些更改后如何重新部署应用

如果强制关闭Java程序,可以使用Apache Daemon重新启动Java应用程序吗?

当用户在 Android 中关闭应用程序时如何重新启动应用程序

部署/重新部署后获取PM2应用程序的正确状态

Java Web应用程序的关闭挂钩

如何防止关闭Java应用程序?

Java检测应用程序何时关闭

需要帮助从Java Web应用程序中删除用户

Java Web应用程序部署失败

Java应用程序的零停机部署

Java Web应用程序部署Heroku

部署非Web Java应用程序

Azure网站-使用Composer重新部署PHP应用程序失败