0

我有一个带有 final 字段的 bean。

public class Foo {
   Service service;
   final String bar;
   public Foo(String bar){};
}

service不是最终的,并且有一个二传手。bar是最终的,可以有很多值。我无法删除final关键字。我尝试创建一个弹簧工厂,允许使用注入的服务和动态 bar 值创建 Foo 的实例。factory.create(bar). Foobean 在运行时被实例化,因为bar值是未知且无界的

我尝试过:

  • @Configuration,但配置不允许不由spring或动态参数管理的参数。
  • 查找方法需要一个无参数构造函数。

任何的想法 ?

谢谢!

4

2 回答 2

4

看看ApplicationContext.getBean(String name, Object... args)方法。您可以使用参数将参数传递给 bean 创建args

于 2013-06-27T11:12:18.657 回答
0

您可以在 Application Context XML 中使用构造函数注入作为执行此操作的一种方法:

<bean name="foo" class="com.example.Foo">

   <constructor-arg index="0">Bar</constructor-arg>

</bean>

编辑:错过了,看看这个问题:如何在春天使用@Autowired

第二个答案(不是我)

看起来您可以在@Configurable此处使用注释。

于 2013-06-27T10:43:29.197 回答