依赖注入
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 中的当前工作目录。 |