我正在尝试使用Gradle多项目构建使用共享包设置Micronaut(1.1.0.BUILD-SNAPSHOT)项目,以便可以将通用逻辑放在一个地方。

在为库创建属性文件时遇到了问题。我在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


完整的示例可用on Github

最佳答案

当前,它被设计为仅读取一个application.yml。如果要从app中删除文件,则将从lib中读取该文件。您可以提出问题以使我们知道这是您想要的。 https://github.com/micronaut-projects/micronaut-core/issues

07-24 18:29
查看更多