package com.ruoyi.task.api; import com.ruoyi.task.config.TaskSwitch; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * 任务模块对外门面(常驻 Bean)。 * *
* ⚠️ 必须显式标注 {@code @Autowired}:本类有两个公开构造器 * (另一个给测试/非 Spring 环境用),且没有无参构造器。 * 不标注的话,Spring 找不到"唯一的非默认构造器",会退回查找无参构造器, * 启动即报 {@code No default constructor found}。 *
* 这与满意度模块 {@code SatisfactionFacade} / {@code SatisfactionSwitch} 是同一个坑, * 该规则由 {@code sql/_probe/verify_spring_beans.py} 静态把关 * (**本类已登记进该脚本的扫描范围**,见脚本 MODULE 配置)。 */ @Autowired public TaskFacade(TaskSwitch taskSwitch) { this.taskSwitch = taskSwitch; } /** * 供测试/非 Spring 环境直接构造:{@code sysConfigValue} 就是 * {@code sys_config} 里的 {@code task.enabled} 值,{@code null} 表示"参数行不存在"。 */ public TaskFacade(com.ruoyi.task.config.TaskProperties properties, String sysConfigValue) { this(new TaskSwitch(properties, sysConfigValue)); } @Override public boolean isEnabled() { return taskSwitch.isEnabled(); } /** * 取运行时开关(供拦截器复用同一实例、也供测试断言) */ public TaskSwitch getTaskSwitch() { return taskSwitch; } }