У меня есть конфигурация Java, в которой я создаю bean-компонент, используя некоторые свойства, определенные в application.properties
. Для одного из них у меня есть значение по умолчанию, которое довольно длинное, поэтому я извлек это значение в поле public static final String
этой конфигурации, теперь я хочу, чтобы @Value
использовал его в качестве значения по умолчанию.
Итак, в конце концов я хочу что-то вроде этого:
@Configuration
public class MyConfiguration {
public static final String DEFAULT_PROPERTY_VALUE = "long string...";
@Bean("midPriceDDSEndpoint")
public DistributedDataSpace<Long, MidPriceStrategy> midPriceDDSEndpoint(
@Value("${foo.bar.my-property:DEFAULT_PROPERTY_VALUE}") String myPropertyValue) {
... create and return bean...
}
}
Однако к весне мое поле не подходит, поэтому мне любопытно, смогу ли я как-нибудь найти его.
Один из способов исправить это - получить доступ к этому статическому полю через компонент конфигурации: @Value(${foo.bar.my-property:#{myConfigurationBeanName.DEFAULT_PROPERTY_VALUE}})
, но использование этого подхода делает конструктор нечитаемым, поскольку аннотация Value
занимает много места (как имя свойства и компонент конфигурации). имя длиннее, чем в этом примере). Есть ли другой способ заставить пружину использовать статическое поле в качестве значения по умолчанию для свойства?