Contribute to this guideReport an issue

guide依赖注入

CKFinder 3 for Java 连接器使用 Spring 核心模块来管理依赖注入。 CKFinder servlet 初始化它自己的内部应用程序上下文,并对 com.cksource.ckfinder 包执行路径扫描以发现和注册所有组件。 如果您需要添加要扫描的组件的自定义路径,可以使用 scan-path servlet 初始化参数。 要详细了解路径扫描,请参阅路径扫描部分。

# 注册自定义组件

可以通过创建自定义组件来更改和扩展 CKFinder 连接器的默认行为。 这些组件应位于 com.cksource.ckfinder 中,或位于 CKFinder 的内部应用程序上下文扫描到的任何其他包中。

建议使用 JSR-330 标准注释注册自定义组件并注入依赖项,即 @Named@Inject

请注意,以这种方式注册的组件位于 CKFinder 的内部应用程序范围内,因此它们可能无法直接访问应用程序中的服务。

以下代码清单展示了一个简单的 事件监听器 组件,该组件监听 RequestEvent 并记录当前 HTTP 请求的查询字符串和 servlet 上下文中的服务器信息。

组件类用 @Named 注释标记。 由于这一点,组件将被实例化并在应用程序上下文中注册。

@Inject 标识 ServletContext 类型的可注入字段。 此注释告诉 DI 容器将 servlet 上下文实例注入标记的类字段。

package com.cksource.ckfinder.listener;

import com.cksource.ckfinder.event.RequestEvent;
import com.cksource.ckfinder.listener.Listener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.servlet.ServletContext;

@Named
public class CustomListener implements Listener<RequestEvent> {
    private static final Logger logger = LoggerFactory.getLogger(CustomListener.class);

    @Inject
    private ServletContext servletContext;

    @Override
    public void onApplicationEvent(RequestEvent requestEvent) {
        logger.info(requestEvent.getRequest().getQueryString());
        logger.info(servletContext.getServerInfo());
    }
}

# CKFinder 注册的组件

下面,您可以找到 CKFinder 连接器在其自己的内部应用程序上下文中注册的组件列表。 您可以在自己的自定义组件中通过构造函数参数或类字段注入这些组件来访问它们。

类型 范围 描述
Acl 请求 访问控制列表组件。 此组件使用在 accessControl 配置选项中定义的规则来控制对资源的访问。
AclRoleProvider 应用程序 ACL 角色提供者。 返回当前用户的角色以针对在 accessControl 配置选项中定义的规则进行检查。 SessionRoleProvider 是默认的具体实现,它返回在 roleSessionAttribute 配置选项中定义的会话属性的值。
ApplicationContext 应用程序 CKFinder 的内部应用程序上下文。
ApplicationEventPublisher 应用程序 应用程序事件发布者。
Authenticator 应用程序 用于确定当前用户是否应该能够访问 CKFinder 的身份验证组件。 此组件应在主机应用程序代码中定义。
BackendFactory 请求 后端工厂服务,它提供配置中定义的 Backend 文件系统包装器的具体实例。
Cache 请求 CKFinder 的内部缓存。
CKFinder 应用程序 主要的 CKFinder 组件
CommandFactory 应用程序 命令工厂组件,它提供用于处理 HTTP 请求的 Command 的具体实例。
Config 请求 要在当前 HTTP 请求范围内使用的连接器配置。
CsrfTokenValidator 应用程序 用于验证 HTTP 请求的 CSRF 令牌的验证服务。
FileSystemFactory 请求 工厂,它为配置中定义的 backends 提供 FileSystem 的实例。
HttpServletRequest 请求 当前 HTTP 请求。
HttpServletResponse 请求 当前 HTTP 响应。
MessageConverter 应用程序 负责组装 HTTP 响应的组件。
ResizedImageManager 请求 负责处理调整大小的图像的组件。
ThumbManager 请求 负责处理内部图像缩略图的组件。
Translator 应用程序 负责翻译错误消息的组件。
ResourceTypeFactory 请求 工厂,它为配置中定义的 resurceTypes 提供 ResourceType 的实例。
ServletContext 应用程序 CKFinder 的 servlet 上下文。
StaticResourcesHandler 应用程序 负责在 serveStaticResources 配置选项启用时提供静态资源的组件。
WorkingFolder 请求 请求范围的组件,表示 CKFinder 中的当前工作目录。