在 Spring 中将插件添加到应用程序上下文
Adding Plugins to Application Context in Spring
为了实现模块化方法(类似于 oSGI)我正在使用 spring 插件框架(https://github.com/spring-projects/spring-plugin),我提供了一个特定的接口作为我的插件实现将实现的扩展点
有两件事需要做
首先:扫描类路径中的所有 类 并获取实现该接口的实现(扩展点)
第二步:将那些实现 bean 添加到应用程序上下文
第一部分可以实现,因为 spring 插件提供了 PluginRegistry,它查找给定插件类型的所有实现
registry.getPluginFor(ProductType.SOFTWARE);
// Returns the first plugin supporting SOFTWARE, or DefaultPlugin if none found
registry.getPluginFor(ProductType.SOFTWARE, new DefaultPlugin());
// Returns all plugins supporting HARDWARE, throwing the given exception if none found
registry.getPluginsFor(ProductType.HARDWARE, new MyException("Damn!");
第二部分:我应该如何在不引起任何冲突的情况下将这个 bean 列表注册到应用程序上下文
可能想看看这个,
为您的扩展点提供一个特定的接口,然后允许插件实现它们可能是一个更好的主意。在这篇文章中,我将描述一种使用注释和 Spring
实现此目的的方法
https://devnotesblog.wordpress.com/2011/03/20/adding-plug-ins-to-your-application-with-spring/
为了实现模块化方法(类似于 oSGI)我正在使用 spring 插件框架(https://github.com/spring-projects/spring-plugin),我提供了一个特定的接口作为我的插件实现将实现的扩展点
有两件事需要做 首先:扫描类路径中的所有 类 并获取实现该接口的实现(扩展点)
第二步:将那些实现 bean 添加到应用程序上下文
第一部分可以实现,因为 spring 插件提供了 PluginRegistry,它查找给定插件类型的所有实现
registry.getPluginFor(ProductType.SOFTWARE);
// Returns the first plugin supporting SOFTWARE, or DefaultPlugin if none found
registry.getPluginFor(ProductType.SOFTWARE, new DefaultPlugin());
// Returns all plugins supporting HARDWARE, throwing the given exception if none found
registry.getPluginsFor(ProductType.HARDWARE, new MyException("Damn!");
第二部分:我应该如何在不引起任何冲突的情况下将这个 bean 列表注册到应用程序上下文
可能想看看这个, 为您的扩展点提供一个特定的接口,然后允许插件实现它们可能是一个更好的主意。在这篇文章中,我将描述一种使用注释和 Spring
实现此目的的方法https://devnotesblog.wordpress.com/2011/03/20/adding-plug-ins-to-your-application-with-spring/