Ответ 1
Инфраструктура, которая использует Spring Boot, может быть использована в вашем собственном проекте точно так же. Вы прокомментировали @zmitrok ответ о предупреждении "неизвестного свойства". Это потому, что ваше свойство не имеет метаданных, поэтому среда IDE не знает об этом.
Я бы настоятельно советовал вам не использовать @Value
, если можно, поскольку он ограничен, по сравнению с тем, что предлагает Spring Boot (@Value
- это функция Spring Framework).
Начните с создания POJO для вашего IP:
@ConfigurationProperties("app.foo")
public class FooProperties {
/**
* IP of foo service used to blah.
*/
private String ip = 127.0.0.1;
// getter & setter
}
Тогда у вас есть два варианта
- Поместите
@Component
наFooProperties
и включите обработку свойств конфигурации, добавив@EnableConfigurationProperties
в любой из ваших классов@Configuration
(этот последний шаг больше не нужен как из Spring Boot1.3.0.M3
) - Оставьте
FooProperties
как есть и добавьте@EnableConfigurationProperties(FooProperties.class)
в любой из ваших классов@Configuration
, который автоматически создаст для вас Spring Bean.
Как только вы сделали это, app.foo.ip
можно использовать в application.properties
, и вы можете @Autowired
FooProperties
в своем коде искать значение свойства
@Component
public MyRestClient {
private final FooProperties fooProperties;
@Autowired
public MyRestClient(FooProperties fooProperties) { ... }
public callFoo() {
String ip = this.fooProperties.getIp();
...
}
}
Итак, ваш ключ по-прежнему остается желтым в вашей среде IDE. Последним шагом является добавить дополнительную зависимость, которая будет смотреть ваш код и генерировать соответствующие метаданные во время сборки. Добавьте в свой pom.xml следующее:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
И voilà, ваш ключ распознается, у вас есть javadoc, и IDE дает вам значение по умолчанию (значение, которое вы инициализировали в поле). После этого вы можете использовать любой тип, который обрабатывает службы преобразования (т.е. URL
), а javadoc в поле используется для создания документации для ваших ключей.
Вы также можете добавить любую проверку JSR-303
ограничения в своем поле (например, регулярное выражение, чтобы проверить его действительный ip).
Отметьте этот примерный проект и документацию для более подробности.