【问题标题】:java bean injectionjava bean注入
【发布时间】:2010-12-28 15:58:32
【问题描述】:

我想使用特定的 java bean 从外部列表创建测试用例。 我正在尝试找到一个 java 工具(spring 框架?或类似的工具)来实例化这个 bean 并用来自外部列表的值填充它(我将执行循环)。 (某种豆类注射剂) 你知道这项工作的任何工具吗?

谢谢, 何塞·克鲁兹

【问题讨论】:

    标签: java spring javabeans code-injection


    【解决方案1】:

    我是 Spring 的忠实粉丝,但我认为 Spring 在这种情况下不会对你有多大好处。在设置您的测试并完成它时,我会在循环中创建该测试 bean 列表。

    【讨论】:

      【解决方案2】:

      我不是 Spring 的粉丝。使用 Guice 或 Weld 进行依赖注入。

      在您的情况下,听起来使用 Commons BeanUtils 会容易得多。 他们有一个带有以下签名的 populate 方法,它使用 Map 而不是 List。

      public static void populate(Object bean,
                                  Map properties)
                           throws IllegalAccessException,
                                  InvocationTargetException
      

      参考:BeanUtils.populate(Object bean, Map properties)

      【讨论】:

      • 当然我应该给你第一段的 -1 (Spring rülez) :-) 但是这里是你的 BeanUtils 解决方案的 +1
      • @Sean SpingSource 改变其许可模式 [阅读收入模式] 的方式非常烦人。其次,约定优于配置总是获胜。大多数特性在 Java EE 6 上都是现成的并且很容易实现。那么为什么还有别的呢?最后但同样重要的是,为什么要使用这么大的框架来做一件简单的事情? :)
      • 我同意最后一部分,BeanWrapper 应该是一个独立的技术,就像 BeanUtils 一样。但是 Spring 的全部意义在于您不需要 Java EE。即使在 servlet 容器或独立应用程序中,您也可以获得全部功能
      • @Sean 支持问题也可能很重要。一家公司提供全栈支持变得越来越重要。我想将来您只会看到 SpringSource(例如 dm 服务器)和仅 Java EE 6 的解决方案。这些决定不会由技术驱动,而是由政治/战略原因驱动。想象一下 Spring 将在生产中的商业应用服务器上运行并且出现问题?
      【解决方案3】:

      基本上,所有这些框架在内部使用的是BeanInfo / Introspector 机制。所以如果你不想自己做当然可以自己使用这个机制。

      请参阅我以前的答案以获得类似的解决方案:
      How to set the fields of an object given a map of key/values?

      当然,对于 Spring,这种事情要舒服得多,尤其是如果您使用 the BeanWrapper technology(当然,它在内部以更奇特、更可扩展的方式做几乎相同的事情)。

      【讨论】:

        猜你喜欢
        • 2011-12-05
        • 2016-08-22
        • 1970-01-01
        • 1970-01-01
        • 2016-12-17
        • 1970-01-01
        • 2021-06-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多