3

我有一个带有这个构造函数的类 HiddenNumber:

public HiddenNumber(java.util.Random random, int maxNumberOfDigits) {
  /* some code */
}

我正在尝试将 DI 的注释用作:

@Autowired
public HiddenNumber(@Value("T(java.util.Random") random, 
    @Value("4")int maxNumberOfDigits) {
  /* some code */
}

但它不起作用。我也试过:

@Autowired
public HiddenNumber(@Value("#{T(java.util.Random}") random, 
    @Value("4")int maxNumberOfDigits) {
  /* some code */
}

如果我做:

@Autowired
public HiddenNumber(Random random, @Value("4") int maxNumberOfDigits) {
  /* some code */
}

在 app-context.xml 中执行:

<bean class="java.util.Random" />

它工作正常。但当然我更喜欢只做注释。

注入 java.util.Random 的正确方法是什么?

谢谢。

4

3 回答 3

5

你可以这样做:

@Autowired
public HiddenNumber(@Value("#{new java.util.Random()}") Random random, @Value("4")int maxNumberOfDigits) {
...
}
于 2013-03-28T17:53:33.000 回答
0

您也可以使用 Spring 的<constructor-arg>元素。例如,请参阅使用构造函数参数字段this填充 spring bean 。

于 2013-03-28T17:56:10.097 回答
0

我需要一个非常简单的程序,我使用 SpEL 解决了这个问题。

为了使用 p: 前缀,您必须在 beans 标签中包含此属性: xmlns:p="http://www.springframework.org/schema/p"

于 2013-07-09T21:40:40.190 回答