2016-09-13 3 views
0

Я использую Spring Boot. Я хотел бы написать свою конфигурацию, используя YAML вместо свойств.Spring Boot с использованием Yaml вместо файла свойств

Поскольку я использую spring-boot-starter, библиотека SnakeYAML уже находится в пути к классам, а SpringApplication автоматически использует версию YAML.

Класс SpringApplication будет автоматически поддерживать YAML в качестве альтернативы свойств всякий раз, когда у вас есть библиотека SnakeYAML на вашем пути к классам.

Проблема в том, что приложение продолжает использовать файл application.properties, и если я его удалю, конфигурация не будет загружена вообще.

Может кто-нибудь мне помочь? это мой главный файл

@SpringBootApplication 
public class App { 


    public static void main(String[] args) throws Exception { 
     SpringApplication app = new SpringApplication(App.class); 
     app.setBannerMode(Banner.Mode.OFF); 
     app.run(args); 
    } 
} 

это мой pom.xml

.... 
    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.0.RELEASE</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

application.yml файл только

tasks: 231232 

и я пытаюсь чтение свойства с помощью нагнетаемого среды

 @Autowired 
     private Environment environment; 

.... 

     log.info(environment.getProperty("tasks")); 

Где моя ошибка?

+0

Можете ли вы попытаться создать атрибут типа 'String', который аннотируется с помощью' @Value ("$ {tasks}") 'и проверить его значение? –

+0

все хорошо документировано [boot-features-external-config] (http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html) – Patrick

+0

Не удалось решать задачи-заполнители 'в строковом значении "$ {tasks}" – Panciz

ответ

0

Вы добавили место после tasks: Убедитесь, что вы добавили пробел после двоеточия (:). Кроме того, в YML отступов играет важную роль

tasks: 123 

Here a syntax page

+0

ok спасибо, я добавил, но результата нет – Panciz

+0

в любом случае исправляю свое оригинальное сообщение – Panciz

+0

где вы размещаете файл application.yml –

-3

Проблема, кажется, с файлом YML

tasks:231232 

должен быть

tasks: 231232 
0

использование ConfigurationProperties аннотаций в основной класс

@SpringBootApplication 
@ConfigurationProperties 
public class App { 


    public static void main(String[] args) throws Exception { 
     SpringApplication app = new SpringApplication(App.class); 
     app.setBannerMode(Banner.Mode.OFF); 
     app.run(args); 
    } 
} 
2

Я решить мою проблему, добавив

<dependency> 
<groupId>org.yaml</groupId> 
<artifactId>snakeyaml</artifactId> 
<version>1.16</version> 

в мой файл pom.xml. Примечание 1.16, весна-бот-стартер-родительский импорт 1.17.

я открыть вопрос https://github.com/spring-projects/spring-boot/issues/6878

0

Проблема заключалась в том, что просто snakeyaml 1,7 баночка была повреждена в моем локальном хранилище. Вероятно, класс не был загружен во время выполнения.

Тот факт, что я не получаю ошибки при сборке не во время выполнения, вводит меня в заблуждение.

Смежные вопросы