2013-03-19 68 views
3

我在屬性文件中有十六進制值,我希望Spring通過在我的java對象中使用@Value註釋將它轉換爲字節數組。屬性文件中的彈簧十六進制字符串

例子:

hex.value=CB53CD20B2F222D9 

而且在Java中,我有以下:

@Value("#{myProperties['hex.value'] ?: ''}") 
private byte[] hexValue; 

春季目前僅設置String.getBytes()作爲hexValue,但我希望它轉換爲一個實際的表示字符串的字節數組。例如通過使用Commons-Codec Hex

有誰知道如何配置Spring,以便它不只是返回getBytes()?

回答

1

您可以嘗試使用Spring EL的Types references

如果你想使用org.apache.commons.codec.binary.Hex#decodeHex,使目標@Value看起來如下:

@Value("#{T(org.apache.commons.codec.binary.Hex).decodeHex((myProperties['hex.value'] == null ? '' : myProperties['hex.value']).toCharArray())}") 
private byte[] hexValue; 
+0

謝謝,這工作。我們嘗試的解決方案几乎與T和括號相同。在SpEL文檔中必須忽略它。 – Ozzie 2013-03-19 13:13:16

+0

魔鬼的細節確實如此 – n1ckolas 2013-03-19 13:14:30

相關問題