【问题标题】:Micronaut setter injectionMicronaut setter 注入
【发布时间】:2023-03-27 22:18:01
【问题描述】:

Micronaut 没有在 setter 方法上注入 @Value。不支持吗?例如,我有

public class Example {


  @Value("${config.one}") //field injection works
  private String one;

  @Value("${config.two}") //field injection works
  private String two;

  @Value("${config.one}") //setter injection doesn't work
  public void setOne(String one) {
    this.one = one;
  }

  @Value("${config.two}") //setter injection doesn't work
  public void setTwo(String two) {
    this.two = two;
  }

}

【问题讨论】:

    标签: java micronaut


    【解决方案1】:

    要使用 setter 注入,必须将 @Inject@Property 结合使用。

      @Inject
      public void setOne(@Property(name = "config.one") String one) {
        this.one = one;
      }
    

    有一些必须注意的问题。只需 CTRL + F Using the @Property Annotation Micronaut Docs.

    【讨论】:

      【解决方案2】:

      你的类必须是 IoC 容器的一个 bean。获取 bean 的最简单方法是使用 @javax.inject.Singleton 注释类

      您可以在这里查看示例https://docs.micronaut.io/latest/guide/index.html#valueAnnotation

      【讨论】:

      • "你的类必须是 IoC 容器的一个 bean。" - 如果不是,那么字段注入将无法工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多