2013-03-28 31 views
1

我有一个类HiddenNumber与此构造注入了java.util.Random:关于构造

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的正确方法?

谢谢。

+1

你不能注入你没有bean的东西。如果您更喜欢注释,只需创建一个基于java的配置。 –

回答

3

你可以这样做:

@Autowired 
public HiddenNumber(@Value("#{new java.util.Random()}") Random random, @Value("4")int maxNumberOfDigits) { 
... 
} 
+0

是否仍然需要'@ Autowired'? –

+0

是的,假设是在HiddenNumber Bean上有一个构造型注解:'@Service public class HiddenNumber {' –

+0

我不明白在这种情况下'@Service'与'@ Autowired'有什么关系。 –

0

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

为了用p:前缀必须包含在豆类标签此属性: 的xmlns:P = “http://www.springframework.org/schema/p”