gpt4 book ai didi

java - 相当于 Spring Boot 中用于动态注入(inject)的 javax.enterprise.inject.Instance

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:06 25 4
gpt4 key购买 nike

我正在将代码从 JEE 迁移到 SpringBoot。我在 JEE 中使用酷动态注入(inject)和 javax.enterprise.inject.Instance 类:

只是注释:

@Inject
private Instance<CCIntentHandler> allMycandidates;

将使 allMycandidates 充满所有继承类路径中的 CCIntentHandler 接口(interface)的类,然后我可以简单地迭代:

Iterator<CCIntentHandler> iterator = allMycandidates.iterator()

没有更多需要。我如何在 Spring Boot 中实现这一点?

谢谢

最佳答案

Spring 将注入(inject) Foo 的所有实例如果你@Autowire一个List<Foo> .

所以,Spring 等同于 ...

@Inject
private Instance<CCIntentHandler> allMycandidates;

...是:

@Autowire
private List<CCIntentHandler> allMycandidates;

更新 1 以回应此评论:

Do CCIntentHandler interface or classes implementing this interface need any Spring annotations?

Spring 必须知道 CCIntentHandler 的任何实例,这可以实现如下:

  • 注释每个实现 CCIntentHandler 的类与 @Component并确保这些类被 Spring Boot 扫描

或者

  • 提供一个公共(public)方法来返回每个实现 CCIntentHandler 的类并用 @Bean 注释这些公共(public)方法中的每一个并确保包含这些公共(public)方法的类被注释为 @Configuration并且此配置类由 Spring Boot 扫描。

关于 bean 声明和依赖注入(inject)的更多细节 in the docs .

关于java - 相当于 Spring Boot 中用于动态注入(inject)的 javax.enterprise.inject.Instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46862500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com