簡體   English   中英

注釋內的 Spring 屬性值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM