Class DbNotificationTemplateResolver<T extends NotificationTemplateBase>
java.lang.Object
io.leandev.appfuse.notification.template.DbNotificationTemplateResolver<T>
- Type Parameters:
T- 應用宣告的具體範本 entity(繼承NotificationTemplateBase)
- All Implemented Interfaces:
NotificationTemplateResolver
public class DbNotificationTemplateResolver<T extends NotificationTemplateBase>
extends Object
implements NotificationTemplateResolver
DB 範本解析器(Phase 2):查一張範本表,指定語系 → 不分語系(wildcard)兩層,查無委派 fallback
依 ADR-017 泛型化於
NotificationTemplateBase、依賴 NotificationTemplateRepositoryBase——本類不再認識租戶:
舊版的四段優先序(tenant+locale → tenant+null → global+locale → global+null)拆成「每個表兩層 +
fallback 串鏈」,由應用組解析鏈表達跨表優先序:
// 租戶覆寫表 → 全域表 → 訊息束(NlsNotificationTemplateResolver)
new DbNotificationTemplateResolver<>(tenantRepo,
new DbNotificationTemplateResolver<>(globalRepo, bundleFallback))
單一實例的解析優先序(命中即用):
- 指定語系(
locale.toLanguageTag()) - 不分語系(
NotificationTemplateBase.ANY_LOCALEwildcard) - 委派
fallback(下一張表或訊息束預設)
租戶範圍由應用 entity 的 @TenantId 於 Session 建構時自動限縮(render 發生在寫 Outbox 的同步
執行緒,tenant context 仍在);全域表無租戶欄位、天然全域。命中 DB 範本時以
TemplateInterpolation 對 model 做 ${name} 插值,與訊息束預設同一套插值。
- Since:
- 4.0.0
-
Constructor Summary
ConstructorsConstructorDescriptionDbNotificationTemplateResolver(NotificationTemplateRepositoryBase<T> repository, NotificationTemplateResolver fallback) -
Method Summary
Modifier and TypeMethodDescription渲染某通知於某通道、某語系的內容
-
Constructor Details
-
DbNotificationTemplateResolver
public DbNotificationTemplateResolver(NotificationTemplateRepositoryBase<T> repository, NotificationTemplateResolver fallback) - Parameters:
repository- 範本 repository(應用宣告的具體型別;租戶覆寫表或全域表)fallback- 本表查無範本時委派的解析器(下一張表或NlsNotificationTemplateResolver)
-
-
Method Details
-
render
public RenderedTemplate render(String type, ChannelType channel, Locale locale, Map<String, Object> model) Description copied from interface:NotificationTemplateResolver渲染某通知於某通道、某語系的內容- Specified by:
renderin interfaceNotificationTemplateResolver- Parameters:
type- 通知型別鍵channel- 遞送通道locale- 目標語系(null 表示系統預設)model- 範本資料袋(含保留鍵deepLink,若有)- Returns:
- 渲染後的主旨與內文
-