跳到内容

Laravel 对齐说明

受众:Laravel 背景开发者、框架贡献者 摘要:说明 SpringOpen 与 Laravel 常见开发体验的语义对应关系,以及明确不照搬的能力边界。

SpringOpen 的目标不是复刻 Laravel 实现,而是在 Java / Spring 生态中提供相近的工程语义:服务注册、配置、Provider、路由中间件、权限策略、队列、调度、事件、通知、CLI、迁移和脚手架都有对应落点。已有成熟 Java 生态方案时,优先生态替换;没有真实消费方的高级语义不提前造轮子。

对齐矩阵

Laravel 能力SpringOpen 对应说明
Service Provider register() / boot()spring-open-starter-lifecycleServiceProvider / ServiceContainer / BindingRegistry用生命周期 Provider 声明服务、配置 schema、菜单权限和启动报告
Facades各 starter Facade 短入口例如 PaymentNotificationStorageSearch 等门面
Manager / DriverFacade → Manager → ConfigResolver → Provider SPIProvider 命名、配置解析和运行时覆盖统一走 starter contract
config/* + 运行时配置spring.open.* 命名空间 + 配置中心 config_entry + RuntimeConfigSource本地配置兜底,后台配置优先
Route Middleware中间件组 + @RouteMiddleware建立在 Spring MVC HandlerInterceptor 之上
FormRequestFormRequest BodyAdvice请求规范化、授权和校验集中处理
Gate / Policy资源实例级 Gate / Policy用于对象级权限判定
Model Observer / 模型事件模型生命周期事件业务实体变化通过事件和 Hook / Pipeline 承接
API Resource whenLoadedResourceIncludes + JSON:API starter?include= 控制关联资源展开
route:list/actuator/routes + CLI route:list运行态和源码巡检双入口
artisanspring-open-cli覆盖 route、schedule、queue、migration、seed、config、module、actuator、codegen、version 等命令
make:*spring-open-codegenCRUD 后端、迁移、菜单权限、Admin、测试和文档预览一体生成
Migration / SeederLiquibase 迁移 + seed changeSet + seed:run使用 Liquibase 作为 Java 生态迁移基线
Queue / Horizonstarter-queue + core-queue 运维面支持失败任务、重试、恢复和指标
Schedulerstarter-scheduler + core-scheduler 运维面支持 db-scheduler、执行日志和后台运维
Events / Notifications / Mail / Cache / Storage / Rate Limit / Localization / Validation / Pagination / Soft Delete对应 starter / core 模块采用 SpringOpen 的 starter + core 分层
Pennantstarter-feature-flag + core-feature-flagFeature Flag 运行时和管理面
Cashiercore-cashier本土化收银台、订单、回调、补偿和支付方式
SocialiteJustAuth 封装的 OAuthProvider SPIOAuth/OIDC 通过统一身份底座接入
Sanctum / PassportSa-Token + Open Platform AK/SK / scope / 签名Java 生态替换,不照搬 token 模型
Scout / Broadcastingstarter-search + module-searchstarter-websocket + core-websocket搜索和实时通信分别由独立底座承接
Telescopeaudit + logging + observability + queue / scheduler 运维面语义覆盖在多个运维面,不做单一聚合 UI

明确非目标

Laravel 能力SpringOpen 决策
Eloquent 关系 ORM(hasMany 等)主线坚持 MyBatis-Plus + BaseService 的 Service-first 通用查询,不引入关系映射 DSL 或万能通用 Controller
artisan tinkerJava 生态已有 JShell,当前价值低、复杂度高,不做框架内 REPL
Blade 模板语法Thymeleaf + Admin/App/PC/Install/Docs 五端前端工程是既定选型,不仿写 Blade
全局 helper 函数spring-open-starter-toolkit 工具类已覆盖,不引入全局函数命名空间
Job Batching(Bus::batch)等队列高级语义无真实消费方前不做;后续如出现明确业务场景,再按 Queue contract 扩展

扩展建议

从 Laravel 迁移过来的开发者可以按以下路径找落点:

想做的事推荐入口
新增业务模块模块地图工程约定
新增第三方 ProviderProvider 扩展模型
新增后台配置项配置说明配置中心
新增路由 / 中间件Web 规范
新增迁移和 seed数据库
新增 CLI / 代码生成能力CLI / Codegen

Released under the Apache License 2.0.