[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() { ... } }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
回顾 2024,蛇年福至,新春献礼,FormCreate + 重磅接入 AI,开启无限可能。
回顾2024HAPPY NEW YEAR 回首 2024,FormCreate 设计器在广大用户的支持下,走过意义非凡的一年。版本的更迭、功能的优化,皆因您的信赖,在此衷心感谢! 商业版:持续进化,铸就卓越 2024 年,商业版稳健更新15 次,其中5 个大版本实现质的飞跃,深度满足您增长的业务需求。我们顺应移动办公趋势,发布移动端设计器,并适配 antdv,提升兼容性与美观度,为您打造便捷优质体验。 开源版:开源共享,携手共进 开源版同样成果丰硕,去年推出9 个版本,还开源移动端设计器,愿与开发者共同探索,完善设计器,为行业发展添砖加瓦。 独具匠心:专属图标,点亮品牌 我们精心设计了 FormCreate 设计器专属原创图标,它们不仅是标识,更承载品牌精神,见证我们携手走过的历程。 渲染器:稳定升级,精益求精 作为核心的渲染器,2024 年约有20 次版本更新,只为让表单渲染更稳定高效,呈现更流畅精准的效果。 2024 的突破成长,离不开大佬们的支持鼓励。未来,我们将砥砺前行,提供更多优质产品服务。再次感谢相伴,期待新一年共创辉煌! 设计器 v5.6 功能预告 (1) 新增 10 个...
- 下一篇
天天 AI-动手学大模型(含 PDF 课件)
2AGI.NET | 探索 AI 无限潜力,2AGI 为您带来最前沿资讯。 2AGI.NET:天天AI-20250121 从开源版o1模型的发布到Adobe推出音乐模型DITTO-2,再到OpenAI为研究长寿推出的GPT-4b,AI技术正以前所未有的速度和规模影响着我们的世界。本文将为您梳理近期的技术热点,带您一探究竟。 全面解读 AI 实践课程:动手学大模型(含PDF课件) 该教程内容较为专业,理解起来有一定难度,因此笔者对其进行了通俗易懂的解读,希望能够帮助读者更轻松地把握课程精髓。当然,若想深入透彻地理解,建议读者按照教程亲自进行实践操作。来源原文 字节发布全新 AI IDE:Trae!它将成为最懂中文开发者的 IDE 字节发布了一款 AI Coding 产品 —— Trae,它是一款对标 Cursor 和 Windsurf 的全新 IDE,也是一款真正为中文开发者量身定制的工具,可谓是中文开发者的福音。其优雅的 UI、丝滑的交互、母语级的支持、更高的 AI 集成度、更然自的交式互对话开发、更精准的 AI 生效成果,都让你感到亲切和惊艳!来源原文 数字化转型的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6