2016-09-02 125 views
0

如何在註釋內獲取屬性值。例如我有一個註釋註釋中的彈簧屬性值

@GetMyValue(value1="Val1",intVal=10) 

現在我想讓「Val1」和10來自屬性文件。我試過

@GetMyValue(value1="${test.value}",intVal="${test.int.value}") 

哪個不行。

我明白我可以使用

@Value("${test.value}") 
String value; 

@Value("${test.int.value}") 
int intValue; 

,我不希望出現這種情況,它必須是一個註釋中。有什麼建議麼?

回答

0

在Spring @Value中,替換佔位符不是在註釋中完成,而是在檢查bean時由框架完成。

  • DefaultListableBeanFactory#doResolveDependency
  • DefaultListableBeanFactory#resolveEmbeddedValue
  • org.springframework.util.StringValueResolver

所以,你必須爲 「手動」 得到註解value1和INTVAL(這應該是在你的註釋字符串)並根據您的屬性文件解決它們。

0

這需要涉及更多的代碼工作,我認爲,但也許你可以有一個解決方法,例如,不硬編碼值爲@GetMyValue annonation,只需在配置bean中引入兩個參數。

private String stringVal; 
private int intVal; 

然後你可以在你的annonation中使用這兩個參數spEL。