private void handleFileChangeEvent(FileChangeEvent fileChangeEvent) {
        WatchEvent.Kind<Path> kind = fileChangeEvent.kind();
        Path path = fileChangeEvent.absPath();
        if (kind == StandardWatchEventKinds.ENTRY_CREATE) {
            Object file = PluginFinder.find(isJsEnabled, path);
            if (file != null) {
                if (file instanceof ZipFile zipFile) {
                    loadJavaPluginOrCloseFile(zipFile);
                } else if (file instanceof JsFile jsFile) {
                    loadJsPlugin(jsFile.script(), jsFile.path());
                }
            }
        } else if (kind == StandardWatchEventKinds.ENTRY_DELETE) {
            pluginRepository.removePlugins(path);
        } else if (kind == StandardWatchEventKinds.ENTRY_MODIFY) {
            pluginRepository.removePlugins(path);
            Object file = PluginFinder.find(isJsEnabled, path);
            if (file != null) {
                if (file instanceof ZipFile zipFile) {
                    loadJavaPluginOrCloseFile(zipFile);
                } else if (file instanceof JsFile jsFile) {
                    loadJsPlugin(jsFile.script(), jsFile.path());
                }
            }
        }
    }
@implNote Start plugins after all beans are ready so that plugins can get any bean when
          starting.
turms-server-common/src/main/java/im/turms/server/common/infra/plugin/PluginManager.java