Micronaut:API检索通过@EachBean构建的bean的@Named值吗?

我有以下内容:

@Context
@EachProperty("some.property")
public class MyCfg {
    public MyCfg(@Parameter String name) {
        // ...
    }
}

@Factory
public class MyFactory {
    @Context
    @EachBean(MyCfg.class)
    public MyBean build(MyCfg cfg) {
        // ...
    }
}

我从文档中了解到MyBean的实例应该继承@Named的{​​{1}}名称,实际上我可以注入它们(例如,作为构造函数参数),{{ 1}}。

但是,如果我通过MyCfg以编程方式检索了他们的@Named("somename") MyBean myBean,则似乎无法访问实例名称。

例如:

BeanDefinition

打印BeanContext,而我希望它可以打印@EventListener void onShutdown(ShutdownEvent event) { event.getsource().getBeanRegistrations(MyBean.class).forEach(br -> { log.info("Shutting down {}",br.getBeanDefinition().stringValue(Named.class))); br.getBean().close(); }); } Shutting down Optional.empty中的任何名称。

你能帮忙吗?

senge11 回答:Micronaut:API检索通过@EachBean构建的bean的@Named值吗?

如果您的目标是在关机时简单地关闭Bean,则只需在工厂方法中添加@Bean(preDestroy = "close")

,

一个bean注册只会存在一次。您应该在寻找bean定义。 beanContext.getBeanDefinitions(...)

本文链接:https://www.f2er.com/3079141.html

大家都在问