[Java] Solon 框架的三大核心组件之一插件扩展体系
1、Solon 的三大核心组件
核心组件 | 说明 |
---|---|
Plugin 插件扩展机制 | 提供“编码风格”的扩展体系 |
Ioc/Aop 应用容器 | 提供基于注入依赖的自动装配体系 |
Context+Handler 通用上下文处理接口 | 提供“开放式处理”适配体系(俗称,三元合一) |
2、Solon Plugin 插件扩展机制
几种 Java 扩展机制:
扩展机制 | 描述 | 特点 | 体验风格 | 适用性 |
---|---|---|---|---|
Java SPI | Java 自带的 | 以接口为单位 | 配置风格 | 适用于所有 Java 生态(最通用) |
Spring Factories | Spring 框架提供的 | 以组件为单位 | 配置风格 | 适用于 Spring 生态体系 |
Solon Plugin | Solon 框架提供的 | 以模块为单位 | 编码风格 | 适用于 Solon 生态体系 |
Solon Plugin 是 Java SPI 的一种“增强”模式,强调编码风格。插件模块元信息配置会申明一个 Plugin 接口的实现类,在应用启动时扫描元信息目录,以发现所有申明的插件实现。
Plugin 的接口定义:
public interface Plugin {
//启动
void start(AppContext context) throws Throwable;
//预停止
default void prestop() throws Throwable{}
//停止
default void stop() throws Throwable{}
}
Plugin 实现类的元信息配置申明:以 META-INF/solon
为专属目录;使用 properties
格式;要配置插件的实现类及优先级。
# META-INF/solon/{packname}.properties
solon.plugin={PluginImpl} #插件实现类配置
solon.plugin.priority=1 #插件优化级配置。越大越优先,默认为0
3、Solon Plugin 插件示例
用一个数据缓存与事务相关的插件为例,以模块为单位实现整体装配(编码风格):
public class DemoSolonPlugin implements Plugin {
@Override
public void start(AppContext context) {
if (context.app() != null) {
//添加事务控制支持
if (context.app().source().isAnnotationPresent(EnableTransaction.class)) {
//添加注解拦截器
context.beanInterceptorAdd(Tran.class, TranInterceptor.instance, 120);
}
//添加缓存控制支持
if (context.app().source().isAnnotationPresent(EnableCaching.class)) {
//添加注解拦截器
context.beanInterceptorAdd(CachePut.class, new CachePutInterceptor(), 110);
context.beanInterceptorAdd(CacheRemove.class, new CacheRemoveInterceptor(), 110);
context.beanInterceptorAdd(Cache.class, new CacheInterceptor(), 111);
}
}
//根据配置自动构建数据源
context.beanMake(DataSourcesAutoConfiguration.class);
}
}
插件应用示意:
@EnableTransaction
@EnableCaching
public class App {
public static void main(String[] args) {
Solon.start(App.class, args);
}
}
@Component
public class DemoService {
@Cache
public String test() {
return new Date().toString();
}
@Tran
public void post() {
...
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2023-01-23 高性能 Java 框架。Solon v1.12.3 发布(春节前兮的最后更)