【问题标题】:DI and IOC using core javaDI和IOC使用核心java
【发布时间】:2012-09-13 12:10:10
【问题描述】:

有没有办法使用核心 java/reflection 来加载创建依赖对象并将其设置为 other 作为依赖项?

我可以做到,但是在处理嵌套 bean 时会遇到问题。

最终,我没有兴趣将spring用于简单的使用。

非常感谢任何帮助。

【问题讨论】:

标签: java reflection dependency-injection inversion-of-control


【解决方案1】:

我建议不要手动执行此操作,它很难正确执行,为什么在已经存在大量解决方案的情况下重新发明轮子? -
java的依赖注入规范是JSR-299,如果你不想使用Spring,你可以使用Weld库作为参考实现
你也可以考虑Guice框架,它是一个轻量级的DI框架。

【讨论】:

    【解决方案2】:

    您不需要框架即可使用 DI。

    你可以

    • 创建所有对象,例如与新的
    • 通过构造函数传递所有必需的对象/参数。
    • 通过设置器传递可选参数。
    • 传递只能在以后通过 setter 构造的对象。

    您也可以编写自己的 IoC 来执行此操作,但如果您想要简单,最好用 Java 编写。

    BTW:如果你想要运行时加载,你可以根据需要在运行时编译和加载 Java 代码。

    【讨论】:

      【解决方案3】:

      我不会在这里重新发明轮子,可能你应该使用一个轻量级的依赖注入容器。

      或许这篇文章会帮助你做出选择: DI containers

      希望对你有帮助

      【讨论】:

        【解决方案4】:

        我自己写的。

        几个先决条件

        1. 格式化您的 xml 以减少解析器的负载。我定义了 xml 元素 <bean id="xyz" class="package path of class"> 用于声明一个类,并定义了 <parameter name="xyz" value="val"><parameter name="xyz" ref="beanid"> 用于实例变量。参数可以指向另一个对象的值或引用
        2. 在解析器端,所有 bean 都是使用反射创建并发布到 hashmap 中,从那里可以使用参数通过引用或值注入依赖项

        很简单。感谢所有的cmets

        【讨论】:

        • 如果您是自己完成的,则应添加指向您的解决方案的链接,否则本主题的目的和您的问题仍未实现!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-15
        • 1970-01-01
        • 2010-11-24
        • 1970-01-01
        • 2020-01-21
        相关资源
        最近更新 更多