如何创建只有带args的构造函数的动态bean

时间:2013-06-27 10:23:59

标签: spring

我有一个带有最终字段的bean。

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

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

我试过了:

  • @Configuration,但配置不允许参数不受spring或dynamic参数管理。
  • Lookup方法需要一个no-arg构造函数。

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

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

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

</bean>

编辑:错过了,请查看此问题:How to use @Autowired in spring

第二个答案(不是我)

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