【问题标题】:Moving Spring Dependency Injected code to Android将 Spring Dependency Injected 代码移至 Android
【发布时间】:2014-01-19 23:36:08
【问题描述】:

阿罗哈 -

我正在将代码从现有 Web 应用程序迁移到 Android 应用程序。现有的 Web 应用广泛使用 Spring 进行依赖注入。

如果可以的话,我想重用 Spring 依赖注入,但我没有看到像在 webapp 中那样初始化它的方法:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>

除了使用 Guice 之外,Google 并没有在这个主题上提供太多帮助。我宁愿不这样做,因为 Web 应用程序仍在开发中,所以如果我要使用 Guice 作为依赖项,我将经常需要在 Spring 依赖项和 Guice 之间进行同步。

有什么方法可以在 Android 上以即插即用的方式使用 Spring for DI,还是我必须考虑以另一种方式重写所有这些东西?

谢谢!

【问题讨论】:

    标签: android spring dependencies code-injection


    【解决方案1】:

    不要尝试在你的 android 应用中使用 spring 依赖注入。 Android 和 spring 不会以任何方式、形状或形式混合在一起。相反,使用工厂设计模式来生成对象。

    【讨论】:

      【解决方案2】:

      您是否考虑过在 ApplicationContext 上滚动,可能扩展 FileSystemXmlApplicationContext 并覆盖 getResourceByPath(String path) 以从 assets/ 文件夹中提取您的上下文文件?

      如果你决定走 Guice 路线,RoboGuice 是一个不错的小图书馆:http://code.google.com/p/roboguice/

      【讨论】:

      • 您应该改为扩展 AbstractXmlApplicationContext。 FileSystemXmlApplicationContext 实现只是一个 getResourceByPath 实现和一些构造函数。
      【解决方案3】:

      请务必在您的 Android 应用中使用 Spring 依赖注入! :-)

      但是您将无法使用原始 Spring 框架,因为它需要 java.beans 包,而 Android 上不存在该包。

      如果你现有的 Spring 配置不是太特别,你会很高兴我的 Spring 框架移植版本称为 RoboSpring。从它的描述来看:

      RoboSpring 是 Spring 框架到 Android 平台的(真正)端口。此外,它还为 RoboGuice 引入的功能提供初步支持,例如将视图引用注入活动等。 RoboSpring 基于 Spring 的 corebeanscontextaop 组件的 3.1.0 RELEASE 版本。它提供以下功能:

      • 使用 Spring 配置文件配置应用程序组件 (XML)
      • 使用 Spring 应用程序上下文中的 bean 自动装配您的 Android 组件。
      • 将 Android 应用程序上下文注入您的 Spring Beans。
      • 将视图注入活动。
      • ……等等

      请看这里:https://github.com/dthommes/RoboSpring

      【讨论】:

        猜你喜欢
        • 2013-04-13
        • 1970-01-01
        • 2020-01-09
        • 2021-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-12
        • 2011-01-05
        相关资源
        最近更新 更多