我正在通过AfterBeanDiscovery#addBean()
方法创建一个合成bean。
有问题的Java类中有一个public void update(Foo foo)
方法。我希望使其表现得像这样写:
@Inject
public void update(@SomeQualifier Foo foo)
...但是我实际上不能更改源代码。换句话说,我想:
@Inject
添加到方法(或等效方法)@SomeQualifier
作为限定符添加到Foo
参数(或等效参数)update
限定的@SomeQualifier
调用Foo
方法 我该怎么做才能使用bean配置器API向容器指示我希望Foo
类型的参数是@SomeQualifier
限定的注入点,例如当容器创建我的合成bean时,foo
的值也将被正确注入吗?
仅调用BeanConfigurator#addInjectionPoint(InjectionPoint)
无效,即使我从其InjectionPoint
方法的返回值中手动创建一个@SomeQualifier
的{{1}}实现。
我会使用getQualifiers()
,但是我没有InjectionTargetFactory
方法中需要的Bean
句柄,因为毕竟我正在创建Bean首先。
我可以通过使用更麻烦的createInjectionTarget(Bean)
方法来解决此问题,但这需要手动创建一个BeanManager#createBean(BeanAttributes, Type, InjectionTargetFactory)
实现。我希望可以通过bean配置器API以编程方式完成所有这些工作。