如何在Micronaut中使用@Parameter?

3
我正在尝试使用Micronaut的DI容器注入依赖项,并希望为Bean使用带有参数/参数的构造函数。我阅读了有关@Parameter注释的内容,但不理解如何使用它。
在API参考中,它说:
“public @interface Parameter 指定bean构造函数的参数是由用户提供的,并且应生成ParametrizedBeanFactory。仅应用于构造函数参数和Bean工厂方法。”

https://docs.micronaut.io/latest/api/io/micronaut/context/annotation/Parameter.html

我应该把注释放在哪里?我能将变量的值传递给bean构造函数吗?


在此添加了一个更具体的问题:https://stackoverflow.com/q/54378321/5877195 - nmnd
@nmnd 你的链接失效了。 - Archmede
@JamesKleeh,你的链接已失效。 - Archmede
这是一个已删除的问题,你希望我怎么做呢? - James Kleeh
1个回答

1

@Parameter - 仅应用于构造函数参数和Bean工厂方法。 micronaut latest doc

例如,您有一个类

@Prototype
public class SomeService {

    @Inject
    private SomeClient client;

    private final String valueA;
    private final String valueB;

    public ReadActivityService(@Parameter String valueA, @Parameter String valueB) {
        this.valueA = valueA;
        this.valueB = valueB;
    }
    
}

如果您想创建给定bean SomeService的新实例并执行依赖注入

@Singleton
@Requires(notEnv = Environment.TEST)
public class Starter {

    @Inject
    private ApplicationContext context;


    @EventListener
    public void init(final ServerStartupEvent event) {
        var service = context.createBean(SomeService.class, valueA, valueB);
    }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接