Инъекция свойств Micronaut не работает с многопроектной сборкой Gradle - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь настроить проект Micronaut (1.1.0.BUILD-SNAPSHOT) с общим пакетом, используя многопроектную сборку Gradle, чтобы я мог разместить общую логику в одном месте.

Я столкнулся с проблемой при созданиифайл свойств для библиотеки.Я поместил некоторые специфичные для библиотеки свойства в application.yml, но похоже, что они не перемещаются на уровень приложения:

lib / src / main / java / lib / CommonSingeton.java

@Singleton
public class CommonSingleton {

  public CommonSingleton(
    @Value("${lib.testProperty}") String value
  ) {
    System.out.println(value);
  }
}

lib / src / main / resources / application.yml

lib:
  testProperty: test

app / src / main / java / app / AppController.java

@Controller("/app")
public class AppController {

  @Inject
  private CommonSingleton commonSingleton;

  @Get(produces = MediaType.TEXT_PLAIN)
  public String index() {
    return "Hello World";
  }
}

Ошибка:

Unexpected error occurred: Failed to inject value for parameter [value] of class: lib.CommonSingleton

Message: Error resolving property value [${lib.testProperty}]. Property doesn't exist
Path Taken: AppController.commonSingleton --> new CommonSingleton([String value])
io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for parameter [value] of class: lib.CommonSingleton

Полный пример доступен на Github .

1 Ответ

0 голосов
/ 11 марта 2019

В настоящее время он предназначен только для чтения одного application.yml. Если вы удалите файл из app, он будет прочитан из lib. Вы можете подать проблему, чтобы мы знали, что это то, что вам нужно. https://github.com/micronaut-projects/micronaut-core/issues

...