我有一个带有这个构造函数的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的正确方法是什么?
感谢。
答案 0 :(得分:3)
你可以这样做:
@Autowired
public HiddenNumber(@Value("#{new java.util.Random()}") Random random, @Value("4")int maxNumberOfDigits) {
...
}
答案 1 :(得分:0)
您也可以使用Spring的<constructor-arg>
元素。例如,请参阅Populating a spring bean using a constructor-arg field或this here。
答案 2 :(得分:0)
我需要这个非常简单的程序,并且我使用SpEL解决了。
要使用p:前缀,必须在beans标记中包含此属性: 的xmlns:P = “http://www.springframework.org/schema/p”