#java #spring #spring-boot
#java #spring #весенняя загрузка
Вопрос:
Возможно ли вставить значение, хранящееся в файле конфигурации (например: application.properties), внутри аннотации java следующим образом :
@MyAnnotation(name="${application.prop1}")
и в application.properties у меня есть:
application.prop1=foo
Так что во время выполнения у меня есть :
@MyAnnotation(name="foo")
Комментарии:
1. Вы решили свою проблему? Мне бы понравилось решение.
Ответ №1:
Да, я не думаю, что это возможно. Spring понятия не имеет о вашей аннотации и не знает, что с ней делать. Даже если вы попытаетесь использовать @Value (..) поверх вашей String name() default ""
(внутри вашей аннотации), Spring все равно этого не сделает, поскольку аннотация не является компонентом. Попытка сделать вашу аннотацию компонентом также не сработает, насколько я могу судить. Похоже, вам придется придумать для этого какой-то тип процессора.
Возможно, изучение следующих разделов может помочь вам получить некоторые идеи о том, как собрать это воедино:
-
Автоматическая настройка:https://www.baeldung.com/spring-boot-custom-auto-configuration
-
Отражение Java:http://tutorials.jenkov.com/java-reflection/index.html
И, конечно, всегда есть вероятность, что вы захотите отступить назад и подумать, почему вы хотите это сделать? Чего вы пытаетесь достичь, возможно, это можно сделать более «готовым» способом.
Ответ №2:
Да, yse @Value
аннотация
@Value("property1")
Комментарии:
1. Мне нужно, чтобы значение разрешалось внутри @MyAnnotation , а не в атрибуте
2. Затем напишите код, который обнаружит такую аннотацию и разрешит ее с помощью SpEL для вас. Ваша аннотация — ваша проблема.