【问题标题】:Will Spring allow me to build a Java application with Dependency Injection testing and a plugin architecture?Spring 是否允许我使用依赖注入测试和插件架构构建 Java 应用程序?
【发布时间】:2014-04-07 23:31:39
【问题描述】:

如果我使用 Spring(或其他 Java Web 应用程序框架),我是否需要在此基础上为我的应用程序构建一个插件系统?使用框架的目的不就是让程序员不必构建架构吗,它就在那里,我只需要挂钩(通过依赖注入、xml 配置或其他方式)?

我在 Programming StackExchange 上问过类似的question,但我认为我不应该把它放在那里。为了具体说明 SO,我在这里对我的问题的措辞有所不同。

编辑:我的措辞可能不正确。对我来说,对于这个问题的上下文,Web 应用程序意味着系统的后端,而不是 UI、Javascript 等。仅在应用程序中切换类(用于测试的模拟数据库、记录器等)。

编辑:感谢 Aaron 的网站,但看起来我的答案是否定的。我不必在 Spring 之上构建另一个插件框架,http://deepeshdarshan.wordpress.com/2013/03/20/learn-spring-by-example-constructor-injection/

xml 文件似乎难以维护,因此 Aaron 的链接看起来很有希望。

http://deepeshdarshan.wordpress.com/2013/03/24/learn-spring-by-example-autodiscovery/

依赖项必须与某处保持同步。

【问题讨论】:

    标签: java spring plugins web-frameworks


    【解决方案1】:

    不一定。如果您 enable auto-discovery of beans in certain packages 或通过创建一个包含您希望可见的所有插件的应用程序上下文,Spring 可以模仿一个插件系统。前者更灵活(只需将 JAR 添加到类路径以添加插件),而后者稍微更安全(“插件”系统只会看到您知道的 bean)。

    下一步是定义一个通用接口,比如IPlugin 来查找和配置每个插件。

    现在,您可以在插件管理器中使用

     @Autowired
     private List<IPlugin> plugins;
    

    这行代码将定位所有已知/可见的实现IPlugin 的bean,将它们收集到一个列表中并将它们注入到plugins 字段中。

    【讨论】:

    • 当你说插件管理器时,你是说 Spring 插件管理器还是我必须构建的?
    • 如果你愿意,Spring 是一个“bean manager”。如果这足以满足您的目的,那就太好了。否则,您需要自己构建。
    • bean 不是我为应用程序插件创建的类吗?这就是你给我的链接上的样子。
    • 有些 bean 是插件,但不是全部。最终,您将需要一些方法来识别可见/已安装/活动的插件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    相关资源
    最近更新 更多