[英]Spring property value inside annotation
如何在注釋中獲取屬性值。 例如我有一個注釋
@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;
我不想要那個,它需要在注釋中。 有什么建議嗎?
在 Spring @Value 中,占位符的替換不是在注釋內部完成,而是在檢查 bean 時由框架完成。
見
DefaultListableBeanFactory#doResolveDependency
DefaultListableBeanFactory#resolveEmbeddedValue
org.springframework.util.StringValueResolver
因此,您必須“手動”獲取注釋 value1 和 intVal(它應該是注釋中的字符串)並根據您的屬性文件解析它們。
我認為這需要涉及更多的代碼工作,但也許您可以有一個解決方法,例如,不要對@GetMyValue
注釋的值進行硬編碼,只需在配置 bean 中引入兩個參數。
private String stringVal;
private int intVal;
然后您可以在 spEL 的注釋中使用這兩個參數。
方法如下:
GetMyValue(value1="#{'${test.value}'}",intVal="#{'${test.int.value}'}")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.