2013-03-28 64 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」